2012-07-25 13 views
5

我無法弄清楚如何在測試我的幫助器方法時測試cookie是否已設置。如何在助手規範中訪問cookie?

假想的helper方法:

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 

任何人都知道如何做到這一點?

+0

http://stackoverflow.com/questions/5475989/rspec-setting-cookies-in-助手測試 在這裏,總是做你的功課! – 2012-07-25 22:05:49

+0

我看到那篇文章,就像OP提到的那樣,他仍然不確定如何_get_ cookies。 – 2012-07-25 22:15:11

+0

根據rspec文檔'response.cookies [「foo」]'應該可以工作,但我在rails 3.2和rspec 2.8上,它不適用於我。 https://www.relishapp.com/rspec/rspec-rails/docs/controller-specs/cookies。據我所知,在rspec,導軌集成測試和機架之間出現了一些奇怪的事情,這使得很難弄清楚。 – Dty 2012-07-26 00:39:06

回答

4

代訂CookieJar一個簡單的模擬的RSpec工作,如果你願意:

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

請求通過

helper.request.cookies[:awesome] = "something" 
+0

這對我不起作用。請記住,我正試圖_get_ cookie,而不是設置它。 – 2012-07-25 22:15:30

2

我在軌道上3.2和RSpec 2.8的餅乾。儘管rspec docs表示以下內容適用於要求規範(即集成測試)。

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

是的,我已經在標準請求規格中檢查過cookies。 – 2012-07-26 00:52:02

+0

@MattBaker你正在使用哪種版本的rails和rspec? – Dty 2012-07-26 00:59:57

+0

@MattBaker在這裏還有一篇關於如何通過在rspec中使用cookie來調試他們的方式的文章。它可能會幫助您弄清楚如何解決這個問題。 http://dobbse.net/thinair/2011/12/capybara-racktest-rspec-cookies-2of2.html – Dty 2012-07-26 01:01:12

相關問題