Koduma IReadOnlyList
uygulandığında, birim sınaması AutoMapperMappingException
'u attı.AutoMapperMappingException - Eksik eşleme türü eşlemesi veya desteklenmeyen eşleme
Makaleler ve belgeler arasında gezinmek, benim tahminim AutoMapper'ın readonly
türleri için özel kodlamaya ihtiyacı olduğunu tahmin ediyor. Bu neye benziyordu?
Not: Önerilen başka bir yayın olarak Mapper.AssertConfigurationIsValid();
kullanmayı denedim, ancak iyileştirme yok.
Test Adı: CreateOrder_ValidContract_CreatesNewOrder Testi FullName: Test Kaynak ACME.Maintenance.Domain.Test.OrderServiceTest.CreateOrder_ValidContract_CreatesNewOrder: C: \ Users \ belgeler görsel stüdyo \ me \ 2015 \ ACME.Maintenance \ ACME Projeleri \ .Maintenance.Domain.Test \ OrderServiceTest.cs : çizgisi 65 Deney Sonucu: başarısız test Süresi: 0: 00: 00,0233941
Sonuç StackTrace: ACME.Maintenance de lambda_method de (Kapatma, ContractDto, Sonuç , ResolutionContext) .Domain.ContractService.GetById (String contractId) C: \ Users bana visual studio \ \ belgeleri \ Projeler \ 2015 \ ACME.Maintenance \ ACME.Maintenance.Domain ContractService.cs \: satır ACME.Maintenance.Domain.Test.OrderServiceTest.CreateOrder_ValidContract_CreatesNewOrder de () C: \ Users \ me \ documents \ visual studio 2015 \ Projects \ ACME.Pişaj \ ACME.Maintenance.Domain.Test \ OrderServiceTest.cs: satır 69 Sonuç iletisi: Test yöntemi ACME.Maintenance.Domain. Test.OrderServiceTest.CreateOrder_ValidContract_CreatesNewOrder istisnayı attı: AutoMapper.AutoMapperMappingException: Eksik harita yapılandırması veya desteklenmeyen eşleme.
Haritalama türleri: ContractDto -> Sözleşme
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>));
}
ContractService sınıfı:
public Contract GetById(string contractId)
{
var contractDto = _contractRepository.GetById(contractId);
var contract = Mapper.Map<ContractDto, Contract>(contractDto);
Mapper.AssertConfigurationIsValid();
return contract;
}
Sözleşme sınıfı:
public class Contract
{
public string ContractId { get; set; }
public DateTime ExpirationDate { get; set; }
}
ContractDto sınıfı:
public class ContractDto
{
public string ContractId { get; set; }
public DateTime ExpirationDate { get; set; }
}
Lütfen sh istisnanın tam metnine - yanlış eşlemenin ne olduğu ve sınıflarınız hakkında bilgi içerecektir. – stuartd
Tam istisna ve sınıfları olan orijinal gönderi güncellendi. –