【问题标题】:How do I access cookies in a helper spec?如何访问帮助规范中的 cookie?
【发布时间】:2012-07-25 21:56:18
【问题描述】:

在测试我的辅助方法时,我不知道如何测试是否设置了 cookie。

假设的辅助方法:

def my_helper(k,v)
    cookies[k] = v
end

测试:

it 'should set cookies' do  
  helper.my_helper("foo", "bar")
  helper.cookies["foo"].should == "bar" #nil
  helper.response.cookies["foo"].should == "bar" #nil
end

有人知道怎么做吗?

【问题讨论】:

标签: ruby-on-rails ruby-on-rails-3 rspec


【解决方案1】:

如果您愿意,可以用一个简单的 rspec 模拟代替 CookieJar 作品:

helper.stubs(:cookies => cookies = mock)
cookies.expects(:[]=).with('foo', 'bar')
helper.my_helper('foo', 'bar')

【讨论】:

    【解决方案2】:

    我正在使用 rails 3.2 和 rspec 2.8。尽管rspec docs 说,以下内容在request 规范(即集成测试)中对我有用。

    it 'should set cookies' do  
      cookies['foo'] = 'bar'
      visit "/"
      cookies['foo'].should == 'bar'
    end
    

    【讨论】:

    • 是的,我确实检查过标准请求规范中的 cookie。
    • @MattBaker 您使用的是哪个版本的 rails 和 rspec?
    • @MattBaker 还在这里发表了一篇关于某人如何通过在 rspec 中使用 cookie 进行调试的文章。它可能会帮助您弄清楚如何解决整个问题。 dobbse.net/thinair/2011/12/…
    • 我们正在使用 rails 3.1.4 和 rspec 2.8。也许我会尝试升级。
    【解决方案3】:

    通过

    请求cookie
     helper.request.cookies[:awesome] = "something"
    

    【讨论】:

    • 这对我不起作用。请记住,我正在尝试获取 cookie,而不是设置它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    • 2011-11-15
    • 2011-11-07
    • 1970-01-01
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多