コードにこれらの 2 行があります。
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」オブジェクトはモック オブジェクト「customer」内にあります。つまり、最初のモック オブジェクト (Customer) 内にもモック オブジェクトを提供する必要があります。私は自分のコードがこのようになることを期待しています。
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 です。