@ledsun blog

Hのキーがhellで、Sのキーがslaveだ、と彼は思った。そしてYのキーがyouだ。

rspe-parametarizedでFizzBuzzのテストコードを書くと?

GitHub - tomykaira/rspec-parameterized: RSpec::Parameterized supports simple parameterized test syntax in rspec.を使ってみます。

require 'rspec-parameterized'
require './fizzbuzz'

describe 'FizzBuzz' do
  using RSpec::Parameterized::TableSyntax

  with_them do
    it { expect(fizzbuzz number).to eq answer }
  end

  where(:number, :answer) do
      0 | ''
      1 | '1'
      2 | '2'
      3 | 'FIZZ'
      4 | '4'
      5 | 'BUZZ'
      6 | 'FIZZ'
      7 | '7'
      8 | '8'
      9 | 'FIZZ'
     10 | 'BUZZ'
     11 | '11'
     12 | 'FIZZ'
     13 | '13'
     14 | '14'
     15 | 'FIZZBUZZ'
     16 | '16'
    100 | 'BUZZ'
    101 | ''
  end
end

テーブル形式を使うと、配列よりテストケースが読みやすくなります。 テストケースの定義とアサーションの順番を自由に配置できます。 多数のテストケースを扱う場合は、アサーションが上に書けた方が便利でしょう。