簡體   English   中英

我如何使用Moles為C#中的一個方法的多次調用返回不同的值?

[英]How can I use Moles to return different values for multiple calls to a method in 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”時,該行“覆蓋”了第一行,因此,我總是會得到false。

有任何想法嗎?

這有點丑陋,但可能:

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

第一次調用將返回true,第二次返回false。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM