Поиск…


Синтаксис

  • mock.Setup (выражение) .Returns (value) // Когда вызываемый метод в выражении возвращает значение

параметры

параметр подробности
выражение Lambda выражение, которое указывает вызов метода.

Метод No-Argument, издевательский

interface Mockable {
    bool DoSomething();
}

var mock = new Mock<Mockable>();
mock.Setup(x => x.DoSomething()).Returns(true);

var result = mock.Object.DoSomething(); //true

Издевательские недействительные методы для подтверждения того, что они возвращают

var logRepository = new Mock<ILogRepository>();
logRepository.Setup(x => x.Write(It.IsAny<Exception>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
  .Verifiable();

В этом случае мы используем Verifiable для обеспечения того, чтобы он выполнялся.

Мы также можем использовать обратный вызов здесь:

logRepository.Setup(x => x.Write(It.IsAny<Exception>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
     .Callback<Exception, string, string, string, string, string>((ex, caller, user, machine, source, message) => { Console.WriteLine(message); });

это будет регистрировать вывод из метода на стандартный вывод на консоли (многие схемы тестирования позволяют вам записывать этот вывод в их бегун)

Скрытые защищенные члены

Чтобы издеваться над защищенным членом, вы должны сначала включить в верхнюю часть своего тестового прибора следующее:

using Moq.Protected;

Затем вы вызываете Protected() на ваш макет, после чего вы можете использовать общий Setup<> с типом возвращаемого метода.

var mock = new Mock<MyClass>();
mock.Protected()
     .Setup<int>("MyProtectedGetIntMethod")
     .Returns(1);

Если метод возвращает void, используйте нестандартную Setup() .



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow