我正在尝试使用rspec测试几个控制器之间的场景。
我认为“请求规格”是我应该使用的方法。
主要问题是我使用请求环境使用基本身份验证登录。
我的控制器测试效果很好:
describe ClientsController do
context "With a confirmed user" do
before(:each) do
@password = "bidon-bidon"
@user = ...
end
it "should create session" do
request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials(@user.login, @password)
post :create
response.should be_success
end
end
end
但是当我将request
方法用于我的文件spec/requests/scenario_spec.rb
时,会引发异常:
describe "My scenario" do
context "With a confirmed user" do
before(:each) do
...
end
it "should do several things"
request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Basic.encode_credentials(@user.login, @password)
post :create
response.should be_success
... some calls to other controllers
end
end
end
request
方法似乎返回nil
。
NoMethodError: undefined method `env' for nil:NilClass
我的问题是:
request
方法的文档?我正在使用Rails 4和Rspec 2.14.7。
答案 0 :(得分:4)
取自这个问题 - Is it possible to specify a user agent in a rails integration test or spec?
尝试:
it "should do several things"
post :create, {}, 'HTTP_AUTHORIZATION' => ActionController::HttpAuthentication::Basic.encode_credentials(@user.login, @password)
response.should be_success
... some calls to other controllers
end