私はちょうどレールを学びながらキュウリから始まり、試してみるためにいくつかのシナリオを実行しました。以下のシナリオを評価し、特に第3ステップの定義を行うためのより良い方法を教えてください。Rails + Cucumber:制限付きリソースへのアクセスをテストするには?
私はdeviseを使用していますので、ユーザーをかなりカスタマイズしていますので、何かを変更してもユーザーが期待通りに動作することを確認したいと思います。
多分この部分は大丈夫です(任意の入力歓迎)。
Scenario: Visitor creates an account
Given I am not authenticated
When I do everything required to create an account
Then I should have access to it
最初の2つの手順もOKです。
Given /^I am not authenticated$/ do
visit destroy_user_session_path
end
When /^I do everything required to create an account$/ do
email = '[email protected]'
name = 'asdf'
password = 'asdf'
visit new_user_registration_path
fill_in 'user_email', :with => email
fill_in 'user_name', :with => name
fill_in 'user_password', :with => password
fill_in 'user_password_confirmation', :with => password
click_on('Sign up')
end
しかし、第3のものが私を得ます。私はヘッダーで200回成功したか、またはユーザーがアクセス権を持っているかどうかを確認する基本的な方法として未承認の401のいずれかをテストすることを考えていました。しかし、私はそれを行う方法を見つけることができませんでした。私に正しいアイデアがあるなら、それを行うコードは何ですか?私が間違ったアイディアを持っているなら、それはなぜそうであり、それを行う良い方法は何ですか?
Then /^I should have access to it$/ do
visit edit_user_registration_path
page.should have_selector "something that only exists on the edit registration page" #works but seems very brittle
# my failed attempt at using rspec inside the step definition:
# get edit_user_registration_path
# response.headers["Status"].downcase.should == "200 success"
#
# another failed attempt:
# response.should render_template(...)
# end
end
これは私の他の答えによってわかりましたか? :) 回答ありがとうございます!私はそのスタイルが使われているのを見ましたが、それはワークフロー/ UIに不必要に結合されているようです。私はそれらのための別の仕様を持っています。私はそれが標準ではないと思うが、それは私がそれを試しているように私が思うように適合する。私は[これらの行](http://ruby.11.n6.nabble.com/How-do-I-include-routing-path-helpers-td3484906.html)に沿ってより多くのことを考えていました。スペック/ルーティングの外側に配置します。私が達成しようとしているのは、その動作がインターフェイス(HTML/JSON/etc)とは独立して動作することをテストすることだけです。 – KobeJohn
ああ、本のためにありがとう。私はBDDのためにキュウリを使用するものを見ていませんでした。私はキュウリのスタイルで楽しい仕事をしています。実装を望ましい動作から離そうとするのは良い練習です。 [例による仕様](http://www.amazon.com/Specification-Example-Successful-Deliver-Software/dp/1617290084/ref=pd_bxgy_b_img_b)は優れた本です。 – KobeJohn