在 rspec 中使用时,摩卡创建的模拟的范围是什么



在我的 rspec 测试套件中,我使用 mocha 库来创建模拟/存根和测试替身。按照建议,我的 rspec 套件中的示例以随机顺序运行。由于某种原因,一些示例现在随机失败。我已经排除了共享数据库状态和全局变量(我承认:我的 Rails 应用程序中有全局变量)。

另一个合乎逻辑的嫌疑人(也许)是嘲笑图书馆。根据 rspec 文档,rspec 会在每个示例之后清除所有模拟,甚至是在 before(:all) 中创建的模拟。这应该适用于任何模拟库,对吧?或。。。

由于历史原因,我的测试套件不使用内置的 rspec 模拟,我们使用摩卡库。

问题:rspec 会在每个示例后清除摩卡创建的所有模拟/存根吗?

一个可能的失败点是没有告诉 Rspec 你想使用 mocha 进行模拟:

# Where you do your Rspec config stuff
RSpec.configure do |config|
  config.mock_framework = :mocha
end

AFAIK,对于你提到的清理工作,你需要这样做。

最新更新