2017-01-23 3 views
0

J'ai besoin d'appliquer une logique complexe pour la création de carte donc je l'ai utilisé convertisseur de type personnalisé comme ci-dessous:Comment affirmer si le convertisseur est appliqué sur un type en utilisant Assertions Courant

cfg.CreateMap<ConsumerRequest,IEnumerable<ProviderRequest>>().ConvertUsing<RequestConverter>(); 

J'utilise fluentassertions dans les tests unitaires et je veux affirmer que ConsumerRequest a RequestConverter appliqué mais je ne sais pas comment le faire, je pense que je devrais pouvoir corriger une méthode d'extension qui affirmera la même chose avec un message mais je ne sais pas comment y parvenir, toute aide sera vraiment appréciée .

Répondre

0

a créé une méthode d'extension sur IMapper comme ci-dessous:

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


} 
+0

En utilisant ce un peut facilement affirmer si un convertisseur est appliqué sur le type ou non –