devise + Rspec でログイン状態のテストをしようとしたら動かなかった
今回も書いてあるとおりにやっていたつもりなのですが、動きませんでした。
そして、よく見たら書いてある通りにやっていなかったというお話です。
やり方はここに書いてある通りです。
書いてある通りに書いた(つもり)specがこれ。
describe "ログインユーザの POST" do before do login_user # ログイン @model = build(:model) post :create, model: @model.attributes end it { response.should be_success } end
そんでもってコンソールに出たエラーがこれ。
undefined local variable or method `login_user' for #<RSpec::Core::ExampleGroup::Nested_1::Nested_12:0x96e6730>
何がわるかったかというと、login_userをコールする位置でした。
理由まで調べていませんが、beforeやit method の中でコールするとこのエラーが出ます。
参考URLに書いてある通り、describeのすぐ後でコールしたらうまくいきました。
こんな感じ。
describe "ログインユーザの POST" do # ここでコール! login_user before do @model = build(:model) post :create, model: @model.attributes end it { response.should be_success } end
書いてある通りにやっていないので動かないの巻。