设计sign_in方法在RSpec测试中抛出NoMethodError

时间:2014-12-28 01:28:29

标签: api ruby-on-rails-4 rspec nomethoderror

Devise sign_in方法应该接受store: false作为第二个参数,除非我在RSpec并使用Devise::TestHelpers,否则它似乎没那么好。

当我从sessions_controller_spec.rb运行此测试时:

require 'rails_helper'
describe Api::V1::SessionsController do
  before(:each) do
    @user = FactoryGirl.create :user
  end
  ...
  describe 'DELETE #destroy' do
    before(:each) do
      sign_in @user, store: false
      delete :destroy, id: @user.auth_token
    end
    it { should respond_with 204 }
  end
end

我得到了这个失败: enter image description here

1 个答案:

答案 0 :(得分:1)

我遇到了同样的问题。根据Devise网站的说法,没有这样的方法。 尝试删除" store:false"参数并再次运行它。它解决了我的问题。

...
describe 'DELETE #destroy' do
before(:each) do
  sign_in @user
  delete :destroy, id: @user.auth_token
end
it { should respond_with 204 }
...

请记住将以下内容放在名为spec / support / devise.rb的文件中,或者放在spec / spec_helper.rb文件中(如果使用的是rspec-rails,则将spec / rails_helper.rb放入其中

RSpec.configure do |config|
  config.include Devise::TestHelpers, type: :controller 
end

Take a look on this link