我的代碼中有這兩行代碼。如何在模擬對象內創建一個模擬對象?
Customer customer = Repository.Customer.GetById(customerId);
Employee employee = customer.Employees.Single(e => e.IsPrimaryContact);
現在,我正在創建一個單元測試。客體和員工都受到保護,所以我需要嘲笑他們。
我已經成功地嘲笑第一個,並創建了一個模擬對象「客戶」作爲其獲得客戶的回報。
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。