我使用 Cucumber 作为带有 rspec/mocha 模拟的 BDD 框架。理想情况下,我们不会在 cucumber 规范中模拟/ stub 行为;然而,这里的情况是异常(exception)的。在这里给您简要介绍一下问题;我有两个功能产品功能和购物车功能。
购物车功能目前正在模拟从 3 方系统获取的一些产品。并在 cucumber 运行购物车功能之前运行产品功能。产品功能在某些场景中使用真实调用。理想情况下,我们希望在场景完成后清除像 Product.stub(:find) 这样的类级别 stub ;然而事实并非如此。类级别的 stub 会持续到下一个 cucumber 场景运行并干扰调用。
我交替使用 mocha 和 rspec 来诱导 stub ;但无济于事;在任何一种情况下, stub 都会保留并阻止我的产品功能在购物车功能之后运行。两者隔离运行良好。
有没有人遇到过类似的问题,即没有在 cucumber 中重置 stub ?有没有办法,我可以恢复原来的类行为?
任何帮助将不胜感激。
干杯
最佳答案
对于 mocha 集成,您应该将以下内容添加到 features/support 文件夹中的文件(如 mocha.rb)
require "mocha"
World(Mocha::Standalone)
Before do
mocha_setup
end
After do
begin
mocha_verify
ensure
mocha_teardown
end
end
after 块应该释放所有模拟。
来源:http://gist.github.com/80554
关于ruby-on-rails - 在 Cucumber 场景中使用 Rspec/Mocha stub ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3218602/