我一直在使用RhinoMocks最近一直,但我一直运行到的问题。如果我中断到调试和跨过代码,而一个模拟是在记录模式中,我最终得到一个异常沿着线:

System.InvalidOperationException: Previous method 'SuchAndSuch.ToString();'  
requires a return value or an exception to throw.

但是,如果我执行相同的代码而不破坏到调试器,将成功地执行,并创建模拟。

我敢肯定,这样做的原因是调试器调用对象的ToString()在当地人和其他监视窗口中显示它们。但由于模拟是在记录模式RhinoMocks考虑到的ToString()的调用是预期的设置,然后是不完全正确。显然,这只是对具体类部分嘲弄发生。嘲笑针对接口不表现出这种行为。

有其他人遇到这个问题?有没有简单的补救办法?难道其他框架如MOQ或TypeMock有这个问题?

谢谢,

〜贾斯汀

有帮助吗?

解决方案

我还记得很多年前具有NMock类似的问题。基本上,正是因为调试器调用并显示属性使用ToString方法发生此问题(除非使用DebuggerDisplayAttribute或类似的)。

如果使用这可能是特别有问题的严格嘲笑,因为它们只允许您调用成员的指定次数,并且调试器与该干涉。使用的松嘲笑地址本(以及许多其他)的问题。

您可能还需要从移动犀牛制品的记录/回放机制走,并开始使用新的和更好的 lambda语法

起订量使用LAMDA语法(几乎)完全是,我从来没有过这样的问题,与它 - 但话又说回来,我没有太多调试这些天,作为单元测试已经沦为替补,以调试

又一补救办法是简单地隐藏汽车当地人调试器窗口。

其他提示

正如马克建议,这个问题应该会在您停止使用走开记录回放,验证方法,并开始使用存根与推荐的AAA方法(排列,法,断言)来代替。

我试图解释这一差别,以及如何与犀牛嘲笑在此的博客帖子

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top