首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rspec:在辅助测试中设置cookie

Rspec:在辅助测试中设置cookie
EN

Stack Overflow用户
提问于 2011-03-30 00:45:46
回答 5查看 16.2K关注 0票数 26

帮助器方法

代码语言:javascript
复制
  # Determine if this is user's first time
  def first_time?
    cookies[:first_time].nil?
  end

尝试的Rspec测试

代码语言:javascript
复制
it "returns true if the cookie is set" do
  cookies[:first_time] = "something"
  helper.first_time?().should be(true)
end

错误:

代码语言:javascript
复制
undefined method `cookies' for nil:NilClass

我读到的所有关于Rspec和cookies的东西都与控制器有关。有没有办法在Rspec helper测试中获取/设置cookie?

(Rspec/Rspec-rails 2.5,Rails 3.0.4)

谢谢!!

更新:

我找到了一个关于如何设置cookie的答案,所以我把它留在这里供其他人参考。

我要找的是:

代码语言:javascript
复制
helper.request.cookies[:awesome] = "something"

还是不知道怎么弄饼干..。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-10-06 10:09:32

我所能找到的最好的解释是:https://www.relishapp.com/rspec/rspec-rails/docs/controller-specs/cookies

引用:

推荐的rails指南-3.0.0至3.1.0

  • 通过规范中的请求和响应对象访问 cookie。
  • 在操作之前使用 request.cookies 来设置状态。
  • 在操作之后使用 response.cookies 来指定结果。
  • 在控制器操作中使用 cookie 对象。
  • 使用字符串键。

示例:

代码语言:javascript
复制
# spec
request.cookies['foo'] = 'bar'
get :some_action
response.cookies['foo'].should eq('modified bar')

# controller
def some_action
  cookies['foo'] = "modified #{cookies['foo']}"
end
票数 21
EN

Stack Overflow用户

发布于 2012-01-07 04:12:38

我只是偶然发现了你的问题(我正在寻找答案)。我成功地尝试了一下:

代码语言:javascript
复制
helper.request.cookies[:foo] = "bar"
票数 5
EN

Stack Overflow用户

发布于 2021-04-27 13:03:00

在Rails 6.1.3上,没有一个答案对我有效,但经过大量测试后,以下答案起作用了:

代码语言:javascript
复制
helper.cookies[:foo] = "bar"

对于签名的cookies:

代码语言:javascript
复制
helper.cookies.signed[:foo] = "bar"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5475989

复制
相关文章

相似问题

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