NSubstitute има ли еквивалент на VerifyAll
повикването на MOQ? Бих искал да проверя дали всички обаждания, които очаквам да бъдат получени във всички заместители, действително се извикват, в идеалния случай в единичен TearDown
метод. В момента проверявам всяко получено обаждане поотделно в тестове, което не е идеално. Като за начало, всички обаждания, които са настроени на заместителя, но които след това всъщност не се извикват, ще се промъкнат в мрежата, ако не са изрично проверени индивидуално.
NSubstitute VerifyAll еквивалент
Отговори (3)
NSubstitute е предназначен за тестове в стил AAA, а не за запис/повтаряне. Като такъв, той не ги поддържа.
VerifyAll
да работи.
- person Daniel Hilgarth; 07.02.2013
substitute.VerifyAll()
или substitute.Received.Foo(42)
?
- person Daniel Hilgarth; 07.02.2013
Това, което описвате, е поведението на Strict mock. Строгите подигравки по дефиниция позволяват само неща, които изрично конфигурирате и очаквате. Това създава много крехки тестове, които са склонни да се повреждат много често, тъй като вашият код се променя, следователно използването на стриктни подигравки не се препоръчва и изобщо не се поддържа от по-нови рамки, като NSubstitute или FakeItEasy.
Бих предложил просто да създадете два теста за всеки един от методите, които трябва да проверите: тест, който проверява, че определен метод е извикан, след това друг, който при същия сценарий проверява този друг метод < силна>неизвикана. По този начин, в случай че логиката ви се промени и един от методите бъде извикан/не извикан, когато трябва, ще получите само един счупен тест.
Знам, че това е доста старо и не съм сигурен от коя страна попадам на Loose срещу Strict, но за NSubstitute можете да постигнете това по следния начин (стил xUnit):
Assert.Empty(_logger.ReceivedCalls());
Показва ви всички получени обаждания, които даден макет има, така че можете просто да се уверите, че този номер е 0. Това може да е по-нова функция от преди, но исках да се уверя, че е там! :)
ReceivedCalls()
: groups.google.com/group/nsubstitute/browse_frm/thread/ Ако имате нужда от това често, вероятно е най-добре да се придържате към Moq или Rhino Mocks. - person David Tchepak   schedule 07.02.2013