ruby-on-rails - 在 Cucumber 场景中使用 Rspec/Mocha stub

标签 ruby-on-rails mocking rspec cucumber mocha.js

我使用 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/

相关文章:

ruby-on-rails - RSpec.configure 和请求对象

rspec - 测试使用 url_for 方法的助手

ruby-on-rails - Sunspot/Solr 无法按 bool 值搜索

javascript - 部分渲染后的 Rails javascript 调用

ruby-on-rails - ruby on rails best_in_place gem 字段名称在错误显示上更改

ruby-on-rails - Rspec 3 Rails 4 模拟链式方法调用带参数

java - 是否需要为这种 Mockito 情况编写自定义匹配器?

c++ - 河马模拟 : mocking just a part of class

ruby-on-rails - 测试我的 Ruby gem:Shoulda::Matchers:Module (NoMethodError) 的未定义方法 `configure'

ruby-on-rails - rails 5 : can't order after group and count