如何在所有单元测试中自动跳过回调,但不在任何集成测试中跳过

时间:2014-05-13 04:36:39

标签: ruby-on-rails rspec callback

我在Rails 4下使用Rspec进行测试。

我想配置Rspec,以便我的所有单元测试自动运行而不需要回调,但我的所有集成测试都按照Rails的意图运行 - 所有回调都与生产和开发相同。

这可能吗?

我可以想到冗长的解决方案,包括将条件逻辑写入我的实际回调,但不是涉及配置Rspec的优雅解决方案。

1 个答案:

答案 0 :(得分:1)

如单https://relishapp.com/rspec/rspec-mocks/v/3-0/docs/message-expectations/allow-a-message-on-any-instance-of-a-class

中所述,您可以在单元测试运行时将测试双倍替换回调方法

例如,如果您有以下类:

def Foo < ActiveRecord::Base
  before_create :my_callback

  ...

end

你可以按如下方式存根回调:

allow_any_instance_of(Foo).to receive(:my_callback)