1

Automapper.Mapper.Map<T1,T2>()を使用するたびに、対応するマッピング構成 ( AutoMapper.Mapper.CreateMap<T1,T2>()) が Bootstrapper に存在することを確認するテストが必要です。

Roslynを使用してコンパイラとやり取りし、Map<>メソッドのすべての使用箇所を見つけてから、それらのインスタンスを使用してマッピングを試みようとしていました。それはうまくいきますが、私はむしろ既存のものを使用したいと思います.

これは存在しますか?そうでない場合、Roslyn よりもこれを行うためのより良い方法はありますか?

4

2 に答える 2

1

あなたはメタプログラミングに深く入り込みすぎています。

最善の方法は、マップされたクラスを 1 つまたは複数の名前空間に含め、それらの名前空間にすべてのクラスのマッピングがあることを確認することです。これには、Roslyn や Cecil などは必要ありません。

コンパイル時のチェックを放棄している場合は、少なくともいくつかの規則を導入する必要があり、規則が明確に定義されている場合は、それらを検証できます。

于 2012-08-05T21:17:55.947 に答える
0

問題は、確信が持てないことです-決定論的ではないケースがたくさんあります(たとえば、タイプのモデルがYAutoMapperにダウンキャストされてobject.

通常のコード カバレッジの一部として、マッピングの実際の消費のカバレッジを提供する必要があります。

それがすべてのマッピング方法の単体テストを意味するかどうかは別の問題です...

于 2012-08-05T20:26:05.320 に答える