Rhinomocks, как проверить, что тупик/насмешку никогда не называли вообще?

Используя Rhinomocks, как я могу проверить, что Насмешку/тупик никогда не называли вообще? Значение никаких методов назвали на насмешке/тупике?

Я знаю о методе AssertWasNotCalled, но этот метод требует, чтобы я упомянул имя метода. (Возможно, у меня есть класс с 10 различными методами, которые можно было назвать).

 Log.AssertWasNotCalled(x => x.LogAndReportException(null, null), x => x.IgnoreArguments());
7
задан Andy 4 January 2010 в 12:03
поделиться

3 ответа

Вы можете использовать Strict mock, так как эта функция может исчезнуть в будущем:

var mocks = new MockRepository();
var cm = mocks.StrictMock<ICallMonitor>();
cm.Replay();

cm.HangUp(); // this will cause VerifyAllExpectations to throw
cm.VerifyAllExpectations();

В этом синтаксисе Strick Mock разрешает только явно определенные вызовы.

6
ответ дан 7 December 2019 в 05:23
поделиться

Когда вы используете насмешки, вы не должны утверждать, что каждый звонок был сделан или нет. Это приводит ваши тесты к определенной реализации и делает их хрупкими и кошмаром рефакторинга.

Если бы я когда-нибудь столкнулся с такой ситуацией, я бы переосмыслил, почему я хотел утверждать, что зависимость никогда не использовалась.

Очевидно, что если зависимость нигде не используется, просто удалите ее. Если она нужна для некоторых операций, но все операции в зависимости являются деструктивными операциями, и вы хотите убедиться, что какая-то операция не причинит им вреда, вы должны явно утверждать, что деструктивные операции не вызывались, и позволить реализации делать с недеструктивными операциями всё, что она захочет (если таковые есть). Это делает ваши тесты более явными и менее хрупкими

.
1
ответ дан 7 December 2019 в 05:23
поделиться

Вы можете использовать метод StrictMock для создания строгого макета - это не удастся, если будет использован какой-либо неизведанный вызов метода. Согласно сайту Айенде , это не рекомендуется, но похоже, что это именно тот сценарий, в котором это было бы полезно.

1
ответ дан 7 December 2019 в 05:23
поделиться
Другие вопросы по тегам:

Похожие вопросы: