同じにやっても動かない

書いてある通りやっているのに動かないのです

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


書いてある通りにやっていないので動かないの巻。