Kam*_*i81 26 ruby rspec ruby-on-rails
我试图避免使用我的session[:referred_by],并想使用request.referrer.但是,我的RSpec测试失败,因为TestRequest它没有存储request.referrer
所以我必须执行以下操作才能使Rspec测试工作.有没有办法让它变得更好:
referrer = request.referrer ? request.referrer : '/'
redirect_to referrer, :alert => error_message
Run Code Online (Sandbox Code Playgroud)
Sim*_*tti 41
ActionDispatch::TestRequest扩展ActionDispatch::Request延伸Rack::Request.
该方法定义如下
def referer
@env['HTTP_REFERER']
end
alias referrer referer
Run Code Online (Sandbox Code Playgroud)
据我记忆,您可以使用在RSpec测试中访问环境变量request.env.这意味着,应该可以设置类似的东西
request.env['HTTP_REFERER'] = 'http://example.com'
Run Code Online (Sandbox Code Playgroud)
当然,这取决于您使用的RSpec示例组的类型.
Mor*_*ori 28
嘲笑它:
specify 'foo' do
controller.request.should_receive(:referer).and_return('http://example.com')
# get whatever
end
Run Code Online (Sandbox Code Playgroud)
或者,如果您不关心它是否被调用,则将其存根:
controller.request.stub referer: 'http://example.com'
Run Code Online (Sandbox Code Playgroud)
get :endpoint, params: {}, headers: { 'HTTP_REFERER' => 'stackoverflow.com' }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12217 次 |
| 最近记录: |