【问题标题】:Stub with Rspec/Mocha in Cucumber scenarios在 Cucumber 场景中使用 Rspec/Mocha 存根
【发布时间】:2010-07-10 09:11:38
【问题描述】:

我使用 Cucumber 作为带有 rspec/mocha 模拟的 BDD 框架。理想情况下,我们不会在黄瓜规范中模拟/存根行为;但是这里的情况很特殊。在这里给您简要介绍一下问题;我有两个功能产品功能和购物车功能。

购物车功能目前正在模拟从 3 方系统获取的一些产品。并且在黄瓜运行购物车功能在产品功能之前运行。产品功能在某些场景下使用真实通话。理想情况下,我们希望一旦场景完成,像 Product.stub(:find) 这样的类级别存根会被清除;然而事实并非如此。类级别的存根会持续到下一个黄瓜场景运行并干扰调用。

我交替使用 mocha 和 rspec 来诱导存根;但无济于事;在任何一种情况下,存根都会保留并阻止我的产品功能在购物车功能之后运行。他们两个单独运行都很好。

有没有人遇到过类似的存根未在黄瓜中重置的问题?有没有办法,我可以恢复原来的类行为?

我们将不胜感激。

干杯

【问题讨论】:

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


    【解决方案1】:

    对于 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

    【讨论】:

    • 太棒了。正是我需要转储 rspec 模拟/存根并使用 mocha! :)
    【解决方案2】:

    mocha 1.1 的语法略有不同:

    require 'mocha/api'
    
    World(Mocha::API)
    
    Before do
      mocha_setup
    end
    
    After do
      begin
        mocha_verify
      ensure
        mocha_teardown
      end
    end
    

    【讨论】:

      猜你喜欢
      • 2013-12-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多