Sono nuovo a NSubstitute, sto provando a prendere in giro un metodo void
con 2 parametri out
e sono abbastanza sicuro che sto sbagliando.NSubstitute un metodo vuoto con parametri fuori
ho una classe CustomerDataAccess
che ha un metodo con la seguente firma:
void GetCustomerWithAddresses(int customerId,
out List<Customer> customers,
out List<Address> addresses);
Il CustomerRepository
chiama il suo metodo GetCustomer
che poi chiama il metodo CustomerDataAccess.GetCustomerWithAddresses
DAL. Il metodo DAL emette quindi due parametri out
per il cliente e uno per gli indirizzi. Il metodo di repository utilizza quindi AutoMapper
per associare i due oggetti dal metodo DAL a un dominio aziendale restituito dal repository.
Ecco il codice che ho finora e non funziona. La mia ricerca non mi ha aiutato a identificare ciò che devo fare per risolvere questo problema. Come imposto il valore dei miei parametri 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);
Sì, quello che funzionava mancava l'accesso ai parametri specifici dell'array. – NathanFisherSdk