Kiedy wdrożony IReadOnlyList
w moim kodu, mój testów jednostkowych rzucił AutoMapperMappingException
.AutoMapperMappingException - Missing konfiguracja typu mapy lub nieobsługiwane odwzorowanie
Od kopania poprzez artykułów i dokumentacji, domyślam się, że AutoMapper potrzebuje specjalnego kodowania dla readonly
typów. Jak by to wyglądało?
Uwaga: próbowałem Mapper.AssertConfigurationIsValid();
jako kolejny post sugeruje, ale nie ma poprawy.
Nazwa testu: CreateOrder_ValidContract_CreatesNewOrder test FullName: ACME.Maintenance.Domain.Test.OrderServiceTest.CreateOrder_ValidContract_CreatesNewOrder testu Źródło: C: \ Users \ mi \ Documents \ visual studio 2015 \ Projects \ ACME.Maintenance \ ACME .Maintenance.Domain.Test \ OrderServiceTest.cs : linia 65 test Wynik: Niepowodzenie testu Czas trwania: 0: 00: 00,0233941
Wynik StackTrace: co lambda_method (zamknięcie, ContractDto, Kontrakt , ResolutionContext) w ACME.Maintenance .Domain.ContractService.GetById (String contractId) W C: \ Users \ me \ Documents \ Visual Studio 2015 \ Projects \ ACME.Maintenance \ ACME.Maintenance.Domain \ ContractService.cs: Linia 34 w ACME.Maintenance.Domain.Test.OrderServiceTest.CreateOrder_ValidContract_CreatesNewOrder () w C: \ Users \ me \ documents \ visual studio 2015 \ Projects \ ACME.Maintenance \ ACME.Maintenance.Domain.Test \ OrderServiceTest.cs: line 69 Komunikat o wyniku: Metoda testu ACME.Maintenance.Domain. Test.OrderServiceTest.CreateOrder_ValidContract_CreatesNewOrder Wyrzucony wyjątek: AutoMapper.AutoMapperMappingException: brak typu konfiguracja mapy lub nieobsługiwane mapowanie.
rodzaje mapowania: ContractDto -> Kontrakt
ACME.Maintenance.Domain.DTO.ContractDto -> ACME.Maintenance.Domain.Contract
Mapper.Initialize(cfg => cfg.CreateMap<ContractDto, Contract>());
Mapper.Initialize(cfg => cfg.CreateMap<PartDto, Part>());
[TestMethod]
public void CreateOrder_ValidContract_CreatesNewOrder()
{
//Arrange
var orderService = new OrderService();
var contractService = new ContractService(_contractRepository);
var contract = contractService.GetById(ValidContractId);
// Act
var newOrder = orderService.CreateOrder(contract);
// Assert
Assert.IsInstanceOfType(newOrder, typeof(Order));
Guid guidOut;
Assert.IsTrue(Guid.TryParse(newOrder.OrderId, out guidOut));
Assert.AreEqual(newOrder.Status, ContractStatus.New);
Assert.IsInstanceOfType(newOrder.Items, typeof(IReadOnlyList<OrderItem>));
}
klasa zamówienia:
public Contract GetById(string contractId)
{
var contractDto = _contractRepository.GetById(contractId);
var contract = Mapper.Map<ContractDto, Contract>(contractDto);
Mapper.AssertConfigurationIsValid();
return contract;
}
Klasa
kontraktu:
public class Contract
{
public string ContractId { get; set; }
public DateTime ExpirationDate { get; set; }
}
klasa
ContractDto:
public class ContractDto
{
public string ContractId { get; set; }
public DateTime ExpirationDate { get; set; }
}
Proszę sh ow pełnym tekście wyjątku - który będzie zawierał informacje o tym, czym jest niedopasowanie - i twoje zajęcia. – stuartd
Zaktualizowany oryginalny post z pełnym wyjątkiem i klas. –