2010-07-10 35 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