Release Version 1.2.3 · jnicklas/turnip · GitHub
未定義のステップを Pending ではなく Failure 扱いにするオプション
Scenario: Unimplemented step When HAHAHA
このシナリオで HAHAHA が定義されていない 場合、通常であれば
Pending: Step-calling steps Unimplemented step When HAHAHA # No such step: 'HAHAHA' # ./spec/features/foo.feature:19 Finished in 0.00259 seconds (files took 0.14445 seconds to load) 1 example, 0 failures, 1 pending
このように Pending 扱い になっていました。1.2.3 からは
RSpec.configure do |config| config.raise_error_for_unimplemented_steps = true end
という設定をしておくと
Failures: 1) Step-calling steps Unimplemented step When HAHAHA Failure/Error: When HAHAHA Turnip::Pending: HAHAHA # ./spec/features/foo.feature:19:in `HAHAHA' # (snip...) Finished in 0.0027 seconds (files took 0.1541 seconds to load) 1 example, 1 failure
このように Failure 扱い に変更できるようになりました。
テスト実行後の各ステップ名にキーワードが付与
こんな感じになります。
A simple feature This is a simple feature - there is a monster -> I attack it -> it should die + Given there is a monster -> When I attack it -> Then it should die
横並びだから元々見辛いみたいなところはありますが…
Placeholder で一度に複数のシンボルを指定できるようになった
たとえば
Scenario: Input password When input kevin's password to password field And input kevin's password to confirm password field Then password and confirm password are equal
みたいなシナリオがあって、これらのステップを
step 'input :password to password field' do |password| @password = password end step 'input :confirmation_password to confirm password field' do |password| @confirm_password = password end step 'password and confirm password are equal' do expect(@password).to eq @confirm_password end
このように定義したとします。この時、:password
および :confirmation_password
の部分を placeholder でカスタマイズしたいと考えると、これまでのバージョンでは
placeholder :password do match(/kevin's password/) do 'kevin@example.com' end end placeholder :confirmation_password do match(/kevin's password/) do 'kevin@example.com' end end
このように 同じ入力であれば同じ出力をする ものでも、必ずシンボル毎に書かなければいけませんでした。そこまで変なことではないのですが、できれば併せて書きたい、という要望があったのでしょう。1.2.3 からはこう書けるようになりました。
placeholder :password, :confirmation_password do match(/kevin's password/) do 'kevin@example.com' end end
DRY !
おまけ
このバージョンであらかた RSpec 3 対応は終わったと思われます。 ちなみに RSpec 3.1 を試してみましたが、特にエラーとかはなく普通に実行できました