Я новичок в NSubstitute, я пытаюсь смоделировать метод void
с двумя параметрами out
, и я почти уверен, что делаю это неправильно.
У меня есть класс CustomerDataAccess
, у которого есть метод со следующей сигнатурой:
void GetCustomerWithAddresses(int customerId,
out List<Customer> customers,
out List<Address> addresses);
CustomerRepository
вызывает свой метод GetCustomer
, который затем вызывает метод CustomerDataAccess.GetCustomerWithAddresses
DAL. Затем метод DAL выводит два параметра out
, один для клиента, а другой для адресов. Затем метод репозитория использует AutoMapper
для сопоставления двух объектов из метода DAL с бизнес-доменом, который затем возвращает репозиторий.
Вот код, который у меня есть до сих пор, и он не работает. Мое исследование не помогло мне определить, что мне нужно сделать, чтобы решить эту проблему. Как установить значение моих out
параметров?
// Arange
ICustomerDataAccess customerDataAccess = Substitute.For<ICustomerDataAccess>();
IList<Customer> customers;
IList<Address> addresses;
customerDataAccess.When(x => x.GetCustomerWithAddresses(
1, out customers, out addresses))
.Do(x =>
{
customers = new List<Customer>() { new Customer() { CustomerId = 1, CustomerName = "John Doe" } };
addresses = new List<Address>() { new Address() { AddressId = 1, AddressLine1 = "123 Main St", City = "Atlanta" } };
});
CustomerRepository sut = new CustomerRepository(customerDataAccess);
// Act
Customer customer = sut.GetCustomer(1);
// Assert
Assert.IsNotNull(customer);