最終的に、すべてのデータベース操作用のインターフェースを作成し、 を実装するクラスIDatabaseを作成しました。DatabaseIDatabase
DatabaseMock次に、も実装するクラスを作成しましたIDatabaseが、テスト中に実行するメソッド本体を変更しました。
を使用Unityして、メイン プロジェクトの とテスト プロジェクトのMoqを構成し、実行時にバインドを解決することができました。web.configapp.config
<configSections>
<section name="unity" type="Microsoft.Practices.Unity.Configuration.UnityConfigurationSection, Microsoft.Practices.Unity.Configuration"/>
</configSections>
<unity xmlns="http://schemas.microsoft.com/practices/2010/unity">
<assembly name="Ecommerce_WCF"/>
<assembly name="Ecommerce_WCF_Test"/>
<alias alias="IDatabase" type="Ecommerce_WCF.IDatabase, Ecommerce_WCF" />
<alias alias="Database" type="Ecommerce_WCF.Database, Ecommerce_WCF" />
<alias alias="DatabaseMock" type="Ecommerce_WCF.DatabaseMock, Ecommerce_WCF" />
<container>
<register type="IDatabase" mapTo="Database" />
<!--<register type="IDatabase" mapTo="DatabaseMock" />-->
</container>
</unity>
containerタグ内で、どちらregister typeがコメント化されているか、コメント化されていないかに応じて、実際のクラスまたは実行中/テスト中かどうかに応じて変更できるモックに従ってバインディングを解決します
Databaseアプリケーション内で操作が使用されるときは常に、次のコードを使用します。
var unity = new UnityContainer().LoadConfiguration();
var proxy = unity.Resolve<IDatabase>();
proxy.AddNewProduct(product);