Muszę kpić z interfejsu, aby zadzwonić do MSMQ, czy istnieje sposób, w jaki mogę użyć Moq do symulacji prawdziwego scenariusza MSMQ, że istnieje 10 wiadomości w kolejce, nazywam się wyśmiewać funkcja 10 razy i mogę uzyskać predefiniowany obiekt, po raz 11 powinienem otrzymać inną wartość zwracaną (np. null)?Moq, aby ustawić powrót funkcji w oparciu o wywołane razy
Odpowiedz
Moq ma teraz metodę przedłużacza nazwie SetupSequence()
w Moq
nazw, co oznacza, można zdefiniować odrębny zwracanej wartości dla każdego konkretnego połączenia.
Ogólną ideą jest to, że po prostu łańcuch żądanych wartości zwracanych. W przykładzie poniżej pierwszego połączenia powróci Joe a drugie wywołanie zwróci Jane:
customerService
.SetupSequence(s => s.GetCustomerName(It.IsAny<int>()))
.Returns("Joe") //first call
.Returns("Jane"); //second call
trochę więcej informacji here.
czasami użyć prostego licznika do takich scenariuszy:
int callCounter = 0;
var mock = new Mock<IWhatever>();
mock
.Setup(mock => mock.SomeMethod())
.Returns(() =>
{
if (callCounter++ < 10)
{
// do something
}
else
{
// do something else
}
});
Dobre rozwiązanie. Możliwe jest również dodanie '.CallBack (...)', gdzie elipsa reprezentuje delegata, który modyfikuje 'callCounter' i ewentualnie inny stan. –
To naprawdę świetny pomysł. – hardywang
Można również ustawić oddzielną funkcję, aby to zrobić. Możesz nawet przekazać funkcję parametrowi, jeśli chcesz:
_serviceMock.Setup(x => x.SomeMethod(It.IsAny<String>())).Returns((String param) => getTimesCalled(param));
- 1. Dławienie w oparciu o zawartość
- 2. Moq - Potrzebujesz wyśmiewanej funkcji, aby zwrócić wartość przekazaną w
- 3. jak ustawić przesunięcie w oparciu o bieżącą klasę selekcji
- 4. niestandardowych funkcji w celu utworzenia adresu URL, aby pobrać dokument w oparciu o klucz
- 5. javascript powrót funkcji rekurencyjnej
- 6. Czy warto szablonować w oparciu o wyliczenia?
- 7. Jak poprosić GDB o złamanie funkcji tylko po tym, jak zostanie wywołane określone czasy?
- 8. Kolor obramowania w oparciu o tło
- 9. Resize textField oparciu o zawartość
- 10. Buforowanie zmiennych instancji Ruby on Rails w oparciu o parametry
- 11. ustawić wartość wielokrotny powrót do deklaracji metody
- 12. Optymalizowanie struktury kontrolnej w oparciu o prążki
- 13. jquery - usuń klasę w oparciu o warunek
- 14. Kompilowanie warunkowe w oparciu o endianness
- 15. MySQL: wartość w oparciu o warunki
- 16. Angularjs ng-show w oparciu o callback
- 17. Specjalizacja szablonów w oparciu o dziedziczenie klasy
- 18. Usuwanie kolumn w oparciu o wartości rzędu
- 19. Powrót przedwcześnie z funkcji w Rakieta
- 20. Konfigurowanie Szyny trasy w oparciu o QueryString
- 21. Knockout.JS: wyzwalacze w oparciu o zmiany obserwowanej
- 22. Pandas kolumny swap w oparciu o stan
- 23. Prosta aplikacja zbudowana w oparciu o laravel?
- 24. Zwróć dane w oparciu o menu rozwijane?
- 25. znajdź element w oparciu o tabindex
- 26. Numeracja miesięcy w oparciu o zero
- 27. git - ignorowanie pliki w oparciu o tryb
- 28. Funkcja wywołująca w oparciu o dom change
- 29. Wybór szablonu danych w oparciu o typ
- 30. Pobieranie wartości klasy w oparciu o klucz
To było rzeczywiście to, czego szukałem :) niesamowite. – Silwing
To jeszcze lepiej! – hardywang
Wygląda na to, że link jest nieistotny:/ – reddy