私は複数のプロジェクトを持つソリューションを持っており、これらのプロジェクトの1つは永続マネージャーを呼び出す私のサービスクラスです。複数のプロジェクトと単体テストでの城ウィンザーの設定
私は次のようにユニットテストを書きたいと思います:私はそれはのためにだと信じてい
this.UoMService.Create(unitOfMeasure); // Fails here as UoMService is null
:
[Test]
public void Create_HappyPath_Success()
{
// Arrange
UnitOfMeasure unitOfMeasure = new UnitOfMeasure();
unitOfMeasure.Code = "Some new unit of measure";
unitOfMeasure.DataOwner = 1;
// Act
this.UoMService.Create(unitOfMeasure); // Fails here as UoMService is null
// Assert something
}
は今、私はこの行のnull参照の例外を取得していますキャッスルウィンザーが呼び出されていないため、UoMServiceがインスタンス化されていないという事実です。 My Castle Windsorアプリケーションインストーラは別のプロジェクト、つまり私のASP.NET MVCプロジェクトで定義されています。だから私の最初の質問は、ユニットテストを実行するためにそのインストーラを再利用できるかどうかということです。
この問題を回避するために、私は自分のWebプロジェクトのインストーラにリンクして、私の単体テストプロジェクトに新しいインストーラを作成しました。それから私は私のセットに次のコードを使用:
[SetUp]
public void ControllersInstallerTests()
{
this.containerWithControllers = new WindsorContainer();
IoC.Initialize(this.containerWithControllers);
this.containerWithControllers.Install(FromAssembly.This());
}
私がテストを実行したときに、私は次のエラーを取得する。この時間:
SetUp : Castle.Windsor.Configuration.Interpreters.XmlProcessor.ConfigurationProcessingException : Error processing node resource FileResource: [] [] ----> Castle.Core.Resource.ResourceException : File C:\Projects\DavidPM\Services\MyProject.Services.ServiceImpl.Test.Unit\bin\Debug\Config\Windsor.config could not be found
疑問は、なぜそれがビンに見ているさを\デバッグフォルダ?
キャッスルウィンザーの初心者として、私は私のユニットテストのためにキャッスルウィンザーにフックするために何をすべきかはわかりません。
あなたは正しいです。ありがとうございました。 – DavidS