Ruby on rails 设置方法调用的期望值,同时仍调用原始实现

Ruby on rails 设置方法调用的期望值,同时仍调用原始实现,ruby-on-rails,ruby,rspec,rspec2,ruby-mocha,Ruby On Rails,Ruby,Rspec,Rspec2,Ruby Mocha,似乎使用Mocha设置任何方法调用期望都会阻止调用原始实现 似乎涵盖了使用rspec调用原始方法 有没有办法用摩卡咖啡做到这一点?或者有人知道为什么不支持此功能吗?这是不可能的,原因有两个。一个原因是,测试方法的副作用和测试方法的调用可以在两个单独的测试中更清楚地完成。我读过的另一个原因是,在纯粹的单元测试中,您不会断言另一种方法的副作用。您将测试调用,然后在特定方法的单元测试中测试被调用的方法的副作用。向下投票:我认为您混淆了返回值和副作用。@MarnenLaibow Koser您能更具体一点

似乎使用Mocha设置任何方法调用期望都会阻止调用原始实现

似乎涵盖了使用rspec调用原始方法


有没有办法用摩卡咖啡做到这一点?或者有人知道为什么不支持此功能吗?

这是不可能的,原因有两个。一个原因是,测试方法的副作用和测试方法的调用可以在两个单独的测试中更清楚地完成。我读过的另一个原因是,在纯粹的单元测试中,您不会断言另一种方法的副作用。您将测试调用,然后在特定方法的单元测试中测试被调用的方法的副作用。

向下投票:我认为您混淆了返回值和副作用。@MarnenLaibow Koser您能更具体一点吗?如果有错误,我可以进行更正,但请删除否决票。你说的是“对另一种方法的副作用作出断言”,但OP似乎在做的事情(尽管我承认它很模糊)是试图依赖另一种方法的返回值。这与副作用大不相同。至于否决票,我否决了,因为我认为你的回答是错误的和误导性的(原因已经给出)。除非我不再相信这种情况,否则我不会取消否决票。我同意回报值和副作用是两码事。在这种情况下,我需要断言在测试期间调用了给定的方法,但我还需要它返回原始调用产生的值。Rspec Mock可以处理这个问题,所以我不明白为什么摩卡不能。我已经过渡到Rspec Mock,并取得了很好的效果。4年后,你不是唯一一个@aceofspades的人。