2010-07-10 32 views
6

我使用Cucumber作爲rspec/mocha mocking的BDD框架。理想情況下,我們不會在黃瓜規格中模擬/存根行爲;然而,這裏的情況是例外。在這裏給你簡要的問題想法;我有兩個功能產品功能和購物車功能。在黃瓜場景中使用Rspec/Mocha的存根

購物車功能目前正在嘲笑從3方系統獲取某些產品。在黃瓜運行中,購物車功能在產品功能之前運行。產品功能在某些情況下使用真實呼叫。理想情況下,我們希望一旦場景完成後,類層次存根(如Product.stub(:find))將被清除;但事實並非如此。級別存根徘徊到下一個黃瓜場景運行並干擾呼叫。

我可互換使用摩卡和rspec誘導存根;但無濟於事;在這兩種情況下,存根都會保留,並且會阻止我的產品功能在購物車功能後運行。他們兩人都孤立地運行良好。

有沒有人遇到類似問題的存根不在黃瓜重置?有沒有辦法,我可以恢復原來的班級行爲?

任何幫助將不勝感激。

乾杯

回答

8

對於摩卡集成,您應該添加以下到一個文件中的功能/支持文件夾(如mocha.rb)

require "mocha" 

World(Mocha::Standalone) 

Before do 
    mocha_setup 
end 

After do 
    begin 
    mocha_verify 
    ensure 
    mocha_teardown 
    end 
end 

塊後應釋放所有的嘲笑。

來源:http://gist.github.com/80554

+0

真棒。正是我需要拋棄rspec嘲笑/ stubbing和去與摩卡! :) – Priyank 2010-07-10 15:05:12

4

語法是摩卡1.1略有不同:

require 'mocha/api' 

World(Mocha::API) 

Before do 
    mocha_setup 
end 

After do 
    begin 
    mocha_verify 
    ensure 
    mocha_teardown 
    end 
end