如何模拟嵌套界面?

how to mock nested interface?

我正在尝试模拟 IUnitOfWork 接口

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

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

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

我将 mock.Object 传递给 class 进行测试

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

我的问题是当模拟函数 return 为 null

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

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

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

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

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

引用Moq Quickstart : Matching Arguments