如何模拟嵌套接口?

时间:2018-11-29 16:15:10

标签: c# unit-testing moq unit-of-work

我正在尝试模拟IUnitOfWork接口

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

IUnitOfWork接口包含其他接口。 所以我想在IUintOfWork

的Customer接口内部模拟一个函数
mock.Setup(s => s.Customer.GetActiveCustomerByIdCard("lala"))
            .Returns(new Customer());

我将模拟对象传递给被测类

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

我的问题是当模拟函数返回null

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

当我调试测试时,我在CustomerManager类中看到了模拟,但是函数返回null

1 个答案:

答案 0 :(得分:2)

设置最有可能使用与调用模拟时使用的值不同的值。

使用It.IsAny<string>()忽略参数值

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

引用Moq Quickstart : Matching Arguments