如何使用Moles为C#中的方法多次调用返回不同的值?
发布时间:2020-12-15 17:21:19 所属栏目:百科 来源:网络整理
导读:我一直试图找到一个解决方案,但要么我一直在寻找错误的搜索条件,或者我的问题根本就没有答案. 问题: 我有一个方法,我想写一个单元测试.在这个方法中有一个我无法真正解决的外部依赖,所以我将不得不使用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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |