RSpec:'allow_any_instance_of'有哪些替代方案?

时间:2016-01-13 00:10:51

标签: unit-testing rspec

the documentation Rspec Mocks维护者

  

......出于多种原因阻止其使用......

列出的原因似乎与此功能的expect版本有关,但它们不区分两者。

我可以看到为什么不鼓励使用expect版本,但allow版本似乎没有分享列出的问题。

似乎使用allow版本是测试某些类型行为的最有效方法。

示例:

我正在测试某些路线的授权。一种方法是在数据库中构建一个用户,但这看起来相当繁重,我更喜欢创建一个模拟对象并在授权调用期间返回它。此示例是测试使用复杂库的代码的特定情况,这些库是单独测试的。

鉴于它气馁,有哪些更好的选择呢?

1 个答案:

答案 0 :(得分:0)

根据您发布的文档,不使用allow_any_instance_of的原因是它过于繁重,可以掩盖您可能错过的潜在代码味道。话虽如此,我仍然使用它...他们绝对没有提供替代品,所以如果你需要这些功能并考虑其他选项或其他方式来编写测试并决定反对,只需使用它。