我的代码中有这两行。
Customer customer = Repository.Customer.GetById(customerId);
Employee employee = customer.Employees.Single(e => e.IsPrimaryContact);
现在,我正在创建一个单元测试。对象、客户和员工都受到保护,所以我需要模拟它们。
我已经成功地模拟了第一个并创建了一个模拟对象“客户”作为通过 ID 获取客户的回报。
Customer customer = new Mock<Customer>().Object;
/* code ... code*/
var mockCustomerRepository = new Mock<ICustomerRepository>();
mockCustomerRepository.Setup(p => p.GetById(It.IsAny<Guid>())).Returns(customer);
Repository.Customer = mockCustomerRepository.Object;
如您所见,“员工”对象位于模拟对象“客户”内,这意味着我还必须在我的第一个模拟对象(客户)内提供一个模拟对象。我希望我的代码是这样的。
Employee employee = new Mock<Employee>().Object;
employee.IsPrimaryContact = true;
List<Employee> employees = new List<Employee>();
employees.Add(employee);
customer.Employees = employees;
/* code ... code*/
但是,尽管我在构建测试时没有任何错误。customer.employee 始终为 NULL。