首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rspec:如何在辅助规范中指定request.env?

Rspec:如何在辅助规范中指定request.env?
EN

Stack Overflow用户
提问于 2012-04-13 05:47:26
回答 5查看 14.5K关注 0票数 22

在我的助手模块中,我有:

代码语言:javascript
复制
def abc(url)
  ...
  if request.env['HTTP_USER_AGENT']
    do something
  end
end

在我的规范文件中,我有:

代码语言:javascript
复制
  describe "#abc" do      
before(:each) do
  @meth = :abc

  helper.request.env['HTTP_USER_AGENT'] = "..."
end
it "should return the webstart jnlp file" do
  @obj.send(@meth, "some_url").should ....
end
end

当我运行spec时,我得到了这个错误:

代码语言:javascript
复制
undefined local variable or method `request' for <ObjectWithDocHelperMixedIn:0x00000103b5a7d0>

如何为request.env'...‘添加存根在我的说明书里?

谢谢。

EN

回答 5

Stack Overflow用户

发布于 2013-04-01 05:19:32

如果你正在使用rspec-rails,你也许能够在你的助手测试中使用controller.request

票数 17
EN

Stack Overflow用户

发布于 2012-04-13 05:53:48

嗯,你几乎没什么可做的:

代码语言:javascript
复制
before(:each) do
  @meth = :abc

  request.env['HTTP_USER_AGENT'] = "..."
end

我只是再试一次,它通过了:

代码语言:javascript
复制
#in helper
def foo
  request.env['HTTP_USER_AGENT']
end

#spec
it "foo" do
  helper.request.env['HTTP_USER_AGENT'] = 'foo'
  expect(helper.foo).to eq 'foo'
end
票数 11
EN

Stack Overflow用户

发布于 2013-04-06 10:20:08

您可以通过执行以下操作覆盖请求环境中的user-agent设置。

代码语言:javascript
复制
before(:each) do
  @meth = :abc
  helper.request.user_agent = 'something else'
end

然后,在您的规范中:

代码语言:javascript
复制
it "does stuff" do
  expect(helper.send(@meth, "some_url")).to # ...
end
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10132363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档