Как проверить, что метод не был вызван в Moq?

Чтобы завершить это обсуждение, препроцессор c ++ завершен. Это семантическое свойство, независимо от того, является ли включение излишним. Следовательно, из теоремы Райса следует, что неразрешимо, является ли включение избыточным или нет. Там НЕ МОЖЕТ быть программа, которая (всегда правильно) определяет, является ли добавление излишним.

424
задан John Saunders 28 August 2014 в 21:36
поделиться

5 ответов

ОБНОВЛЕНИЕ: Начиная с версии 3 проверьте обновление вопроса выше или ответа Dann ниже.

Также, сделайте свою насмешку строгой, таким образом, она перестанет работать при вызове метода, для которого у Вас нет ожидания

new Mock<IMoq>(MockBehavior.Strict)

Или, если Вы хотите, чтобы Ваша насмешка была свободна, используйте.Throws (Исключение)

var m = new Mock<IMoq>(MockBehavior.Loose);
m.Expect(a => a.moo()).Throws(new Exception("Shouldn't be called."));
146
ответ дан 22 November 2019 в 23:11
поделиться

Это не работает в последних версиях Moq (по крайней мере начиная с 3,1), он должен быть указан в Verify метод, как упомянуто в ответе.

На самом деле, лучше указать .AtMost(0) после оператора Returns.

var m = new Mock<ISomething>();
m.Expect(x => x.Forbidden()).Returns("foo").AtMost(0);

, Хотя "броски" также работает, AtMost(0), более выразительно, по моему скромному мнению.

9
ответ дан Liam 29 August 2014 в 08:36
поделиться
  • 1
    Осторожный, тем не менее, если Ваша команда содержит пробелы. В этом случае необходимо использовать start "" "command with spaces.exe" – Joey 30 October 2009 в 06:46

Используйте.AtMostOnce ();

После реального теста назовите метод снова. Если это выдает исключение, это назвали.

-5
ответ дан 22 November 2019 в 23:11
поделиться

Украдено из: Ответ Джона Фостера на вопрос "Нужна помощь, чтобы лучше понять Moq"

Одна из вещей, которую вы, возможно, захотите проверить, это то, что метод pay не вызывается, когда человек старше 65 лет передается в метод

[Test]
public void Someone_over_65_does_not_pay_a_pension_contribution() {

 var mockPensionService = new Mock();

 var person = new Person("test", 66);

 var calc = new PensionCalculator(mockPensionService.Object);

 calc.PayPensionContribution(person);

 mockPensionService.Verify(ps => ps.Pay(It.IsAny()), Times.Never());
}
41
ответ дан 22 November 2019 в 23:11
поделиться

Запустить проверку после теста, для которого задано перечисление Times.Never . например

_mock.Object.DoSomething()
_mock.Verify(service => service.ShouldntBeCalled(),Times.Never());
505
ответ дан 22 November 2019 в 23:11
поделиться
Другие вопросы по тегам:

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