マップを作成するためにいくつかの複雑なロジックを適用する必要があるため、以下のようにカスタムタイプコンバーターを使用しました。
cfg.CreateMap<ConsumerRequest,IEnumerable<ProviderRequest>>().ConvertUsing<RequestConverter>();
単体テストでfluentassertionsを使用していて、ConsumerRequestにRequestConverterが適用されていることを表明したいのですが、その方法がわかりません。メッセージで同じことを表明する拡張メソッドを修正できるはずですが、これを実現する方法がわかりません。 、どんな助けでも本当にありがたいです。
以下のようにIMapperに拡張メソッドを作成しました。
public static AutoMapperTypeConverterAssertions<TDestinationModel>ForType<TDestinationModel>(this IMapper subject)
{
return new AutoMapperTypeConverterAssertions<TDestinationModel>(subject);
}
public class AutoMapperTypeConverterAssertions<TDestinationModel> : ReferenceTypeAssertions<object, AutoMapperTypeConverterAssertions<TDestinationModel>>
{
public AutoMapperTypeConverterAssertions(object subject)
{
Subject = subject;
}
protected override string Context => "auto mapper type converter";
public AndConstraint<AutoMapperTypeConverterAssertions<TDestinationModel>> ShouldHaveTypeConverterApplied<TSourceModel, TConverterType>(
string because = "", params object[] becauseArgs)
{
var mapper = Subject as IMapper;
var foundTypeInConfig = mapper
.ConfigurationProvider
.FindTypeMapFor<TSourceModel, TDestinationModel>()
.TypeConverterType;
Execute.Assertion
.BecauseOf(because, becauseArgs)
.ForCondition(foundTypeInConfig == typeof(TConverterType))
.FailWith("Expected the mapping for {0} to contain {1} AutoMapper Type Converter, but was not found.", typeof(TDestinationModel).Name, typeof(TConverterType).Name);
}
return new AndConstraint<AutoMapperTypeConverterAssertions<TDestinationModel>>(this);
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加