私はこれらの2行を自分のコードに持っています。mockedオブジェクト内でmockedオブジェクトを作成するにはどうすればよいですか?
Customer customer = Repository.Customer.GetById(customerId);
Employee employee = customer.Employees.Single(e => e.IsPrimaryContact);
ここでユニットテストを作成します。オブジェクト、顧客、従業員の両方が保護されているので、私はそれらを嘲笑する必要があります。
私は正常に最初の1つを嘲笑し、顧客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です。