如何使用Rails集成/功能规范测试cookie的存在?

时间:2013-07-09 00:12:53

标签: ruby-on-rails cookies rspec integration-testing

如果任何网址中存在特定的引荐变量,我的控制器将设置Cookie。该cookie导致许多下游行为,我想使用集成规范进行测试。我如何访问cookie?

尝试(失败)行为的示例:

describe "example cookie test" do
  before do
    visit home_path(:referal_variable => "123456")
  end

  it "sets the cookie" do
    response.cookies["referal_variable"].should == "123456"
  end
end

这会产生错误:     NameError: undefined local variable or method `response' for #<RSpec::Core::ExampleGroup::Nested_2::Nested_6::Nested_1::Nested_1:0x007fa8e73f78b0>

我已经看到控制器规格使用response方法,但它不在这里工作......如何在集成测试中访问我的Cookie?

(编辑:括号)

2 个答案:

答案 0 :(得分:0)

你想要那个@response。您正在尝试访问本地而不是全局变量,这就是为什么它会向您返回未定义的名称错误。我见过的其他例子

  @response.cookies

得到它。然后,您可以通过哈希

访问它来提取所需内容
    testCookies = @response.cookies.to_hash
    cookie = testCookies['somecookie']

然后你可以用它返回任何你想要的东西。我注意到在Rails版本5上,您应该在本地定义此变量,并且只需使用&#39; cookies即可访问它。不需要@request部分。

答案 1 :(得分:-1)

根据我的理解,不应在集成测试中测试cookie。在调试器集成测试期间检查设置的值显示响应对象为nil且cookie设置为空。我的解决方案是分别编写控制器规范以检查是否设置了cookie,并测试集成规范中的其余行为。 加上relish cookies section明确指出,控制器规范公开了访问cookie的方法。