Есть ли в 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.
Я бы предложил просто создать два теста для каждого из методов, которые вам нужно проверить: тест, который проверяет, что определенный метод был вызван, а затем другой, который в том же сценарии проверяет этот другой метод < strong>не был вызван. Таким образом, в случае, если ваша логика изменится, и один из методов будет вызван/не вызван, когда он должен, вы получите только один тест.
Я знаю, что это довольно старо, и я не уверен, на чью сторону я попадаю в Loose vs 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