微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用Moles为C#中的方法多次调用返回不同的值?

我一直试图找到一个解决方案,但要么我一直在寻找错误搜索条件,或者我的问题根本就没有答案.

问题:
我有一个方法,我想写一个单元测试.在这方法中有一个我无法真正解决的外部依赖,所以我将不得不使用Moles来创建我的单元测试.

这个外部依赖包含一个调用多次(两次)的实例的方法,第二次我想用Moles返回一个不同的值.

...
bool myVar = SomeInstance.someMethod(); // Here I'd like to return true
if( myVar )
...
...
bool myOtherVar = SomeInstance.someMethod(); // Here I'd like to return false
...

现在通常我把它设置为

MSomeInstance.someMethod.AllInstances.someMethod = @this => true;

但是,如何才能为这两个呼叫设置不同的行为?当我在上面的一行之后写了另一行并返回“false”时,这会“覆盖”第一行,所以我总会得到错误的结果.

有任何想法吗?

解决方法

这有点难看,但有可能:

var toggle = false;
MSomeInstance.someMethod.AllInstances.someMethod =
    @this => { toggle = !toggle; return toggle; };

一个调用将返回true,第二个调用将返回false.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐