2016-07-19 8 views
0

これは私が開発した単体テストの手法です。模造する方法IMappingExpression <TSource、TDestination> CreateMap <TSource、TDestination>();

私のプロジェクトはEntity Frameworkを使用しているので、 私はテストでMocking Entityフレームワークを使用しています。テスト用プロジェクトでメモリデータ(テーブル用)を作成しています。

私のプロジェクトでは、次の方法でvw_employeesからMapperを使用しています。

configuration.CreateMap<vw_employees, User>().ForMember(m => m.Id, opt =>opt.MapFrom(u => u.ID)).ForMember(m => m.DisplayName, opt =>opt.MapFrom(u => u.FullName)); 

ので、私はモックからユーザーオブジェクトを取得するように、上記configuration.CreateMapをモックとしたいです。

public class User : IHaveCustomMappings 
{ 
    public string Id { get; set; } 
    public string DisplayName { get; set; } 
    public string Role { get; set; } 
    public string UserDomain { get; set; } 
    public long? bId { get; set; } 

    public void CreateMappings(IMapperConfiguration configuration) 
    { 
     try 
     { 
      configuration.CreateMap<vw_employees, User>().ForMember(m => m.Id, opt =>opt.MapFrom(u => u.ID)).ForMember(m => m.DisplayName, opt =>opt.MapFrom(u => u.FullName)); 
     } 
     catch (AutoMapperConfigurationException ex) 
     { 
      throw; 
     } 
    } 
} 

ユニットテストでは、マッパーを次のようにモックしようとしていますが、動作しません。

テスト中に上記のクラスから次の依存関係を解決する方法を教えてください。

public void CreateMappings(IMapperConfiguration configuration) 
    { 
     try 
     { 
      configuration.CreateMap<vw_employees, User>().ForMember(m => m.Id, opt =>opt.MapFrom(u => u.ID)).ForMember(m => m.DisplayName, opt =>opt.MapFrom(u => u.FullName)); 
     } 
     catch (AutoMapperConfigurationException ex) 
     { 
      throw; 
     } 
    } 
+0

マッピングをテストしたいのですか、またはオートマッパが動作することをテストしますか?私はあなたが何かを嘲笑する必要はないと思う! – Neil

+0

@Neil nope彼は何らかのコントローラーやサービスユニットのテストで 'configuration'インスタンスを模擬したいと思っています。 – kayess

+0

彼はAutoMapperをテストしたいと思うように聞こえますか?私はこれが彼がテストする必要があるものではないことを示唆している! – Neil

答えて

1

IMappingExpressionをモックしないでください。実際には、何でもをAutoMapperでモックしないでください。ただそれを直接使用してください。 AutoMapperで何かを嘲笑しても価値はありません。私はなぜの設定を模擬したいのか分かりません。

+0

詳細については、上記の質問を編集しました。それを調べて助けてください! – Satya

+1

私の答えは変わりません。あなたはAutoMapperをモックしたくありません。上記のように、MappingConfigurationの実際のインスタンスをあなたの呼び出しに渡すだけで、偽の/嘲笑されたバージョンではありません。 –

関連する問題