Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing RSpec:x27的替代方案是什么;允许';的任何实例;?_Unit Testing_Rspec - Fatal编程技术网

Unit testing RSpec:x27的替代方案是什么;允许';的任何实例;?

Unit testing RSpec:x27的替代方案是什么;允许';的任何实例;?,unit-testing,rspec,Unit Testing,Rspec,在Rspec模拟维护程序中 。。。出于一些原因不鼓励使用它 列出的原因似乎与此功能的expect版本有关,但它们对两者没有区别 我可以理解为什么不鼓励使用expect版本,但是allow版本似乎没有列出这些问题 似乎使用allow版本是测试某些类型行为的最方便的方法 示例: 我正在测试一些路线的授权。一种方法是在DB中构造一个用户,但这似乎相当繁琐,我更喜欢创建一个模拟对象,并在authorize调用期间返回它。本例是测试使用复杂库的代码的一个特定案例,这些库是单独测试的 考虑到不鼓励使用,有什

在Rspec模拟维护程序中

。。。出于一些原因不鼓励使用它

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

我可以理解为什么不鼓励使用
expect
版本,但是
allow
版本似乎没有列出这些问题

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

示例:

我正在测试一些路线的授权。一种方法是在DB中构造一个用户,但这似乎相当繁琐,我更喜欢创建一个模拟对象,并在authorize调用期间返回它。本例是测试使用复杂库的代码的一个特定案例,这些库是单独测试的


考虑到不鼓励使用,有什么更好的替代方法吗?

根据您发布的文档,不使用
允许任何实例的原因是它过于繁重,可能会掩盖您可能错过的潜在代码气味。尽管如此,我仍然使用它。。。他们肯定没有提供替代方案,因此,如果您需要该功能,并且考虑过其他选项或其他编写测试的方法,并决定不使用这些选项或方法,请使用它。

我发现文档中缺少该功能,这就是我问这个问题的原因。特别是它没有区分
allow
expect
变体,也没有提出任何替代方案。我相信文档的作者正在阻止这些方法的
allow
expect
版本,尽管它们在示例中使用了
expect
。他们提供了一个使用
Widget
的示例,如:```因此,存在一些语义混乱的边缘情况。例如,在expect\u any\u instance\u of(Widget.).to receive(:name)。tweeps中,不清楚特定实例是否需要两次接收name,或者是否需要两次接收总计。(这是前者。)``相反,试着将协作者作为一个模拟对象传递进来,并对其做出期望,而不是任何实例。不幸的是,我不相信Rspec中有任何替代方案,除了改变你编写测试的方式,这正是他们所建议的。
allow
expect
都非常广泛,可以掩盖您可能犯的其他错误。