単体テストではほとんどのインタフェースをモックするためにUnityAutoMoqを使用しますが、最近では実際の動作をより完全にシミュレートするためにテストフレームワークを使用したいという状況に遭遇しました。それが私がやっていることを受け入れるのに役立ちますか?)UnityAutoMoqContainerとの汎用インターフェースの登録
UnityAutoMoqは、UnityAutoMoqContainerがインターフェイスを嘲笑するのを待たずに、具体的なマッピングを登録できるようになると思っていました。これは、私がジェネリックインターフェースを除いて試したことすべてに当てはまります。あなたは私のような視覚的だ場合は、ここで私がしようとしているものの抜粋です:
public static void Register(IUnityContainer container)
{
...
container.RegisterType(typeof(IService<>), typeof(TestFrameworkService<>),
new HierarchicalLifetimeManager(), new InjectionFactory(Create));
...
}
private static object Create(IUnityContainer container, Type type, string name)
{
var T = type.GetGenericArguments().Single();
return new TestFrameworkService<T>();// For simplicity, pretend this works
}
あなたは上から見ることができるように、私は、注射によって、その後、一般的なコンクリートへのジェネリックインターフェイスを登録していますファクトリは着信タイプを使用して解決します(実際の実装は単純化のため省略されています)。これは通常のUnityContainerで動作し、予想されるコンクリートを返します。 UnityAutoMoqContainerは、代わりに注入工場を完全にバイパスしてモックを返します。
誰も私が達成しようとしているもののようなものを試しましたか?何か案は?