moq
Издевательское поведение
Поиск…
Синтаксис
- 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