vendredi 22 juillet 2016

AutoMapperMappingException - Missing type map configuration or unsupported mapping

When I implemented IReadOnlyList in my code, my unit test threw an AutoMapperMappingException.

Missing type map configuration or unsupported mapping.

From digging through articles and documentation, my guess is that AutoMapper needs special coding for readonly types. What would this look like?

Note: I tried Mapper.AssertConfigurationIsValid(); as another post suggested, but no improvements.

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>));

    }

Domain Layer: ContractService class

public Contract GetById(string contractId)
    {
        var contractDto = _contractRepository.GetById(contractId);
        var contract = Mapper.Map<ContractDto, Contract>(contractDto);
        Mapper.AssertConfigurationIsValid();
        return contract;
    }

StackTrace:

lambda_method(Closure , ContractDto , Contract , ResolutionContext )
at ACME.Maintenance.Domain.ContractService.GetById(String contractId) at OrderServiceTest.CreateOrder.Order_ValidContract_CreatesNewOrder()

Aucun commentaire:

Enregistrer un commentaire