Как я могу использовать Moles для возврата различных значений для нескольких вызовов метода в C #? - PullRequest
4 голосов
/ 28 октября 2011

Я пытался найти решение для этого, но либо я искал неправильные условия поиска, либо просто не нашел ответа на свой вопрос.

Проблема: я 'У меня есть метод, для которого я хотел бы написать модульный тест.В этом методе есть внешняя зависимость, которую я не могу разрешить, поэтому мне придется использовать 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.

Есть идеи?

1 Ответ

2 голосов
/ 28 октября 2011

Это немного уродливо, но возможно:

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

Первый вызов вернет true, второй false.

...