最終的に、すべてのデータベース操作用のインターフェースを作成し、 を実装するクラスIDatabase
を作成しました。Database
IDatabase
DatabaseMock
次に、も実装するクラスを作成しましたIDatabase
が、テスト中に実行するメソッド本体を変更しました。
を使用Unity
して、メイン プロジェクトの とテスト プロジェクトのMoq
を構成し、実行時にバインドを解決することができました。web.config
app.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);