摩卡:沉默满足期望

时间:2011-11-14 20:58:55

标签: ruby-on-rails unit-testing mocha

很多时候,当我在使用摩卡的单元测试中错过了期望时,它会吐出几十个或几百个“满意的期望”,而我真的不在乎。有很多我必须将测试输出重定向到临时文件,这真的很烦人。

我正在使用Rails 2.3和Mocha 0.10.0。

澄清一下,我有同样的问题 Mocha Mock Carries To Another Test ,那里的解决方案对我没用。然而,即使我能解决这个问题,我也想抑制“满意的期望”。

感谢。

1 个答案:

答案 0 :(得分:1)

你可以通过猴子修补摩卡来实现这一目标。在Mocha::Mockery上有一个方法可以返回满意的期望,你可以修补它以返回一个空数组:

module Mocha
  class Mockery
    def satisfied_expectations
      []
    end
  end
end

如果你把它放在test_helper.rb中,它就会被拿起来。

或者为了更灵活一点,您可以选择仅在设置环境变量时隐藏它们:

module Mocha
  class Mockery
    def satisfied_expectations_with_optional
      if ENV['MOCHA_HIDE_SATISFIED']
        []
      else
        satisfied_expectations_without_optional
      end
    end
    alias_method_chain :satisfied_expectations, :optional
  end
end

然后像这样运行你的测试:

> MOCHA_HIDE_SATISFIED=1 rake test