RSpec,在请求规范中验证Devise用户

时间:2013-03-04 21:34:58

标签: ruby-on-rails rspec devise warden

我试图编写RSpec请求规范以测试我的服务API,为此我需要对用户进行身份验证。 我在网上找到了一些例子,但没有任何作用,目前我一直坚持这个:

require "spec_helper"

include Warden::Test::Helpers
Warden.test_mode!

describe "My requests" do

  it "creates an imaginary object" do
    user = FactoryGirl.create(:user)
    login_as(user, :scope => :user)
    post "/my_service", :my_data=> {:some => "data"}
    expect(response.body).to include("success")
  end

end

我得到的错误是:

 ArgumentError: uncaught throw :warden

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

您需要实际登录用户(即用户需要提交登录表单,或至少对您的登录操作进行POST),如下所述:Stubbing authentication in request spec

答案 1 :(得分:0)

最简单的是:

<强>规格/ rails_helper.rb

RSpec.configure do |config|
  # ...
  config.include Devise::Test::IntegrationHelpers, type: :request
end

只需在您的请求规范中使用sign_in即可。这相当于在系统/功能规范或Rails系统/控制器测试中声明include Devise::Test::IntegrationHelpers

这样做会带来“更好”的感觉。测试