2009-09-18 16 views
6

Próbuję przetestować dość złożoną klasę przy użyciu Moq i mam problem.moq - jak sprawdzić, czy metoda nie została wywołana, jeśli klasa rzuca wyjątki

Próbuję sprawdzić, czy metoda NIE jest wywoływana, i zazwyczaj jest to łatwe do zrobienia poprzez ustawienie MockBehavior.Strict, ale tutaj jednak klasa ma swój własny mechanizm raportowania błędów, więc połyka wyjątek zgłaszany przez Moq .

. Metoda VERifyAll na końcu testu również przechodzi dobrze, co jest naprawdę dziwne. Czy jest to błąd w Moq, czy są jakieś obejścia?

Próbowałem również skonfigurować wywołanie zwrotne w tej metodzie i wykonując wewnątrz niego plik Assert.Fail, ale ponieważ zostanie to również połknięte, struktura testowa (test wbudowany VS 2008) nie zostanie powiadomiona o tym. ..

Używam Moq 2.6.1014.1. (nie zdążyłem jeszcze uaktualnić do moq 3)

Odpowiedz

11

To jest krępujące, udało mi się go rozwiązać.

w 3,0 można to zrobić:

mFMXmlC.Verify(f=>f.Put_Queue_Response(It.IsAny<Uri>(), 
             It.IsAny<string>(), 
             It.IsAny<string>(), 
             It.IsAny<object>()), Times.Never()); 

Nadal nie rozumiem, dlaczego VerifyAll nie działa, ale to wydaje się pasowały tak. Pozostawię to pytanie na wypadek, gdyby ktoś szukał czegoś podobnego.

+0

Możesz to powtórzyć na http://groups.google.com/group/moqdisc?pli=1, aby sprawdzić, czy jest to błąd lub oczekiwane zachowanie. – TrueWill

Powiązane problemy