RSpec:“allow_any_instance_of”的替代方案是什么?

agb*_*ike 5 unit-testing rspec

文档中,Rspec Mocks 维护者

... 出于多种原因不鼓励使用它...

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

我可以理解为什么expect不鼓励该版本,但该allow版本似乎没有共享列出的问题。

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

例子:

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

鉴于它不鼓励,什么是更好的选择?

jmk*_*oni 1

根据您发布的文档,不使用的原因allow_any_instance_of是它过于严厉,并且可能掩盖您可能错过的潜在代码气味。话虽如此,我仍然使用它......他们肯定没有提供替代方案,所以如果您需要该功能并且考虑过其他选项或其他方式来编写测试并决定不使用它们,那就使用它。