2013-07-09 55 views
1

如果任何URL中存在特定的引薦變量,我的控制器將設置一個cookie。該cookie會導致很多下游行爲,我想使用集成規範進行測試。我如何訪問cookie?未遂(失敗的)行爲的如何使用Rails集成/功能規格測試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?

(編輯:括號內)

回答

0

據我瞭解餅乾不得集成測試tests.Inspecting與調試器集成測試期間設置的值顯示,該響應對象是零和設置cookies是空的。我的解決方案是單獨編寫控制器規格以檢查是否設置了Cookie,並測試集成規格中的其他行爲。 加上relish cookies section明確指出,該控制器規範揭露訪問cookie的方式。

0

你想爲那個@response。你試圖訪問本地而不是全局變量,這就是爲什麼它會返回一個未定義的名稱錯誤。其他的例子我見過使用

@response.cookies 

得到它。然後,你可以通過訪問它像一個散列提取你需要的東西

testCookies = @response.cookies.to_hash 
    cookie = testCookies['somecookie'] 

然後你可以返回任何你想要的。我會注意到,在Rails版本5上,你應該在本地定義這個變量,並且只需要'cookies'就可以訪問它,而不需要@request部分。

相關問題