Railsテスト駆動開発Rspec

テスト駆動開発の手順

テスト駆動開発では、以下の3ステップで実装を進めていく。

01. 仮実装

以下のテストはGreenになる。
この時点では、count_helloメソッドはreturn 5とかでも大丈夫。
バカみたいなことだけど、まずはテスト自体の有効性を確かめたい。

test 'helloは5文字である。'
  assert_true 5, count_hello
end

02. 三角測量

以下のテストは下の方がRedになる。
この時点で、count_helloメソッドがおかしいことに気づく。
自信がなければいくつかパターンを用意しても良いだろうね。

test 'helloは5文字である。'
  assert_true 5, count_hello
end

test 'hello!は5文字ではない。'
  assert_false 5, count_hello
end

03. 明白な実装

以下のテストは両方Greenになる。

この時点で、count_helloを本格的に実装して、テストを通過させる。

テストが素早く通る最低限の実装で十分。

test 'helloは5文字である。'
   assert_true 5, count_hello
end

test 'hello!は5文字ではない。'
   assert_false 5, count_hello
end

Rspecの導入

rspecの導入

bundle install
bundle exec rails g rspec:install

最初のテストを作る

fujitatsuは自作のGem

touch blog/spec/sample_spec.rb
require 'fujitatsu'

RSpec.describe Fujitatsu::Translator do
  it "入力した文字に濁点をつけて返す" do
    expect(Fujitatsu::Translator.shout("どうしてなんだよぉおお!!うわぁぁあああああああああああ"))
    .to eql(
      "ど゛う゛し゛て゛な゛ん゛だ゛よ゛ぉ゛お゛お゛!゛!゛う゛わ゛ぁ゛ぁ゛あ゛あ゛あ゛あ゛あ゛あ゛あ゛あ゛あ゛あ゛あ゛"
    )
  end
end

テストの実行

bundle exec rspec spec/sample_spec.rb
>
.

Finished in 0.00536 seconds (files took 0.15229 seconds to load)
1 example, 0 failures