IReadOnlyList
をコードに実装すると、ユニットテストでAutoMapperMappingException
がスローされました。AutoMapperMappingException - タイプマップの設定が欠落しているか、サポートされていないマッピング
記事やドキュメントを掘り下げて見ると、AutoMapperにはreadonly
タイプの特別なコーディングが必要です。これはどのように見えますか?
注:私はMapper.AssertConfigurationIsValid();
を試してみましたが、改良はありません。
テスト名:CreateOrder_ValidContract_CreatesNewOrderテスト フルネーム:ACME.Maintenance.Domain.Test.OrderServiceTest.CreateOrder_ValidContract_CreatesNewOrder テストソース:C:\ユーザーはプロジェクト\ ACME.Maintenance \ ACME \ Visual Studioの 2015 \ドキュメント\私\ .Maintenance.Domain.Test \ OrderServiceTest.cs :ライン65の試験結果:失敗した試験時間:0:00:00.0233941
結果のStackTrace: ACME.Maintenanceでlambda_methodで(閉鎖、ContractDto、契約 、ResolutionContext) .Domain.ContractService.GetById(String contractId ) でのC:\ユーザーは、私のVisual Studio \ \ドキュメントを\プロジェクト\ 2015 \ ACME.Maintenance \ ACME.Maintenance.Domain ContractService.cs \:ライン ACME.Maintenance.Domain.Test.OrderServiceTest.CreateOrder_ValidContract_CreatesNewOrderで( ) C:¥Users¥me¥documents¥visual studio 2015 \ Projects \ ACME.Maintenance \ ACME.Maintenance.Domain.Test \ OrderServiceTest.cs:line 69結果メッセージ:テストメソッド ACME.Maintenance.Domain。 Test.OrderServiceTest.CreateOrder_ValidContract_CreatesNewOrder 例外がスローされました:AutoMapper.AutoMapperMappingException:タイプが見つからない マップの構成またはサポートされていないマッピング。
マッピングタイプ:ContractDto - >契約
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クラス:
public Contract GetById(string contractId)
{
var contractDto = _contractRepository.GetById(contractId);
var contract = Mapper.Map<ContractDto, Contract>(contractDto);
Mapper.AssertConfigurationIsValid();
return contract;
}
契約クラス:
public class Contract
{
public string ContractId { get; set; }
public DateTime ExpirationDate { get; set; }
}
ContractDtoクラス:
public class ContractDto
{
public string ContractId { get; set; }
public DateTime ExpirationDate { get; set; }
}
してくださいあなたのクラスとそのミスマップに関する情報を含む例外の全文 – stuartd
完全な例外とクラスを含む元の投稿が更新されました。 –