我试图编写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
感谢您的帮助。
答案 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
。
这样做会带来“更好”的感觉。测试