как издеваться над вложенным интерфейсом? - PullRequest
0 голосов
/ 29 ноября 2018

я пытаюсь смоделировать интерфейс IUnitOfWork

Mock<IUnitOfWork> mock = new Mock<IUnitOfWork>();

интерфейс IUnitOfWork содержит другие интерфейсы.поэтому я хочу смоделировать функцию в интерфейсе клиента внутри IUintOfWork

mock.Setup(s => s.Customer.GetActiveCustomerByIdCard("lala"))
            .Returns(new Customer());

я передаю mock.Object для тестируемого класса

var manager = new CustomerManager(mock.Object);
        var res = manager.AddNewCustomer(new Customer());

моя проблема заключается в том, что фиктивная функция возвращает ноль

var customer = _unitOfWork.Customer.GetActiveCustomerByIdCard(idCard);

когда я отлаживаю тест, я вижу макет в классе CustomerManager, но функция возвращает ноль

1 Ответ

0 голосов
/ 29 ноября 2018

Скорее всего, установка использует значение, отличное от того, которое используется при вызове макета.

Используйте It.IsAny<string>(), чтобы игнорировать значение параметра

mock
    .Setup(s => s.Customer.GetActiveCustomerByIdCard(It.IsAny<string>()))
    .Returns(new Customer());

Ссылка MoqБыстрый старт: соответствующие аргументы

...