Поведение по умолчанию для объекта Moq Mock
- заглушка всех методов и свойств.Это означает, что вызов этого метода / свойства с любыми параметрами не завершится с ошибкой и вернет значение по умолчанию для определенного возвращаемого типа.
Вы вызываете метод Setup
по любой или всем из следующих причин:
- Вы хотите ограничить входные значения для метода.
public interface ICalculator {
int Sum(int val1, val2);
}
var mock = new Mock<ICalculator>();
mock.Setup(m=>m.Sum(
It.IsAny<int>(), //Any value
3 //value of 3
));
Приведенная выше настройка сопоставит вызов метода Sum
с любым значением для val1
и val2
значение 3.
- Вы хотите вернуть конкретное значение.Продолжая пример
ICalculator
, следующая установка вернет значение 10 независимо от входных параметров:
var mock = new Mock<ICalculator>();
mock.Setup(m=>m.Sum(
It.IsAny<int>(), //Any value
It.IsAny<int>() //Any value
)).Returns(10);
- Вы хотите использовать
Mock<T>.VerifyAll()
после настройки, чтобы убедиться, чтовсе предыдущие настройки были вызваны (один раз).
var mock = new Mock<ICalculator>();
mock.Setup(m=>m.Sum(
7, //value of 7
3 //value of 3
));
mock.Setup(m=>m.Sum(
5, //value of 5
3 //value of 3
));
mock.VerifyAll();
Приведенный выше код проверяет, что Sum
вызывается дважды.Один раз с (7,3)
и один раз с (5,3)
.