学習の書き留め プログラミング勉強中

プログラミングで学んだことを日記として残して行こうと思います

今日の学習

今日は復習 2020/01/24

新しく学んだことがなかったわけではないが、
記事に書くこともなかったので復習も兼ねて今日はテストについて軽く書きたいと思います

rubyのtest

rubyにはもともとmini-testと呼ばれるテストが使えるようになっていますが、とはいえテストといえばやはりRSpecでしょうか。 今日はrailsRSpecをしたことはあると思いますが、ruby単体での導入方法を紹介したいと思います。
まあみなさんご存知だと思いますが。。。

とりあえず、ディレクトリは

Fizz_buzz  
  |-Irb fizz_buzz.rb  
  |-Test   

とします。 fizz_buzz.rbのテストで作る予定なので中身は、

def fizz_buzz(n)
  if n % 3 == 0 && n % 5 == 0
    "Fizz Buzz"
  elsif n % 3 == 0
    "Fizz"
  elsif n % 5 == 0
    "Buzz"
  else
    n.to_s
  end
end

puts fizz_buzz(1)
puts fizz_buzz(2)
puts fizz_buzz(3)
puts fizz_buzz(4)
puts fizz_buzz(5)
puts fizz_buzz(6)
puts fizz_buzz(15)

とします。

ここから導入方法です。

まずtestに移動

% cd test

Gemfileを生成

% bundle init

Gemfileにrspecのgemを記述

# frozen_string_literal: true

source "https://rubygems.org"

git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }

# gem "rails"
gem "rspec", ">= 3.0.0"

インストール

% bunlde install

ファイルの生成

% bundle exec rspec --init

ディレクトリの内容を確認します。

Fizz_Buzz  
  |- Irb  
  |- Test  
        |-Gemfile  
        |-Gemfile.lock  
        |-.spec  
        |-spec  
            |-spec_helper.rb  

となっていると思います。

spec_helper.rbの編集
=begin と =end の部分を削除してコメントを外す。(なぜこれをするのかまだわかってないです。)( ; ; )

あとは、テストファイルを作って内容を記述するだけです。

Fizz_Buzz
  |- Irb
  |- Test
        |-Gemfile
        |-Gemfile.lock
        |-.spec
        |-spec
            |-fizz_buzz_test.rb
            |-spec_helper.rb
require '../../Irb/fizz_buzz.rb'

RSpec.describe 'Fizz Buzz' do
  example 'fizz_buzz' do
    expect(fizz_buzz(1)).to eq '1'
    expect(fizz_buzz(2)).to eq '2'
    expect(fizz_buzz(3)).to eq 'Fizz'
    expect(fizz_buzz(4)).to eq '4'
    expect(fizz_buzz(5)).to eq 'Buzz'
    expect(fizz_buzz(6)).to eq 'Fizz'
    expect(fizz_buzz(15)).to eq 'Fizz Buzz'
  end
end

まとめ

まだあいまいのところもあるからゆっくり理解していく。