Hartl の Rails チュートリアルの第 9 章の演習まで完了しました。私は何年も試してきましたが、質問6をクラックできません:
サインインしたユーザーは、コントローラーの
new
およびcreate
アクションにアクセスする必要はありません。Users
そのようなユーザーがこれらのページにアクセスしようとすると、ルート URL にリダイレクトされるように手配します。
まず、これらのテストをどこに置くべきですか? 現在試しているところですuser_pages_spec.rb
が、これが正しいかどうかはわかりません。では、ロジック自体はどこに配置すればよいのでしょうか。
第二に、これは私のテストがどのように見えるべきかです:
describe "after signing-in" do
before { sign_in(user) }
describe "creating a new user" do
before { put new_user_path }
specify { response.should redirect_to(root_url) }
end
end
上記を実行した瞬間、RSpecが教えてくれます
応答はリダイレクトであると予想されていましたが、http://www.example.com/signin へのリダイレクトでした。
しかし、サインインしているユーザーでアクセスしてブラウザでテストすると、http://localhost:3000/users/new
リダイレクトはまったくありません (コードを書いていないので、これはより理にかなっています)。
私は github から Hartl のコードをダウンロードしたことさえありますが、彼がこの機能をどこに/どこに組み込んだのかわかりません。
編集: 私は両方を持っています
describe "creating a new user" do
before { visit new_user_path }
it { should_not have_selector 'title', text: full_title('Sign Up') }
end
と
describe "creating a new user" do
before { get new_user_path } # note the use of GET here not PUT
specify { response.should redirect_to(root_url) }
end
適切に動作するようにします。助けてくれた@Peter de Ridderに感謝