キャッスルウィンザー登録の現在の私の理解は、ルートコンポーネントの解決を呼び出すことによってのみ登録を検証できることです。しかし、Windsorのコンポーネントモデルは各コンポーネントの依存関係を知っているので、実際に何かをインスタンス化せずにすべての依存関係を満たすことができるかどうかをテストすることが可能でなければなりません。これを行う主な理由は、起動時に外部リソースを呼び出すコンポーネントをスタブする必要がない登録用の単体テストを持つことです。城ウィンザー:解決を呼びかけることなく登録を検証する方法はありますか?
たとえば、私はIRootとしてルートを登録しますが、IChildを登録しない場合は
public class Root : IRoot
{
private IChild child;
public Root(IChild child)
{
this.child = child;
}
}
:私はIChildに依存しているクラスのルートを持っています。私はこのような決意を呼び出すとき:
var container = new WindsorContainer().Register(
Component.For<IRoot>().ImplementedBy<Root>()
);
container.Resolve<IRoot>();
私はエラーを取得する:依存関係グラフを歩くと、すべての依存関係ができていることを確認します
container.TestResolve<IRoot>();
:
MyNamespace.Root is waiting for the following dependencies:
Services:
- MyNamespace.IChild which was not registered.
のようなものがあります満足していますが、実際には何もインスタンス化していませんか?
素敵な試験方法:) – bevacqua
このコードは、もはやコンパイルしません: 型「Castle.Windsor.Diagnostics.IPotentiallyMisconfiguredComponentsDiagnostic」は型パラメータとして使用することはできません「TDiagnostic」ジェネリック型またはメソッド「Castle.Windsorに.Diagnostics.IDiagnosticsHost.GetDiagnostic() '。 'Castle.Windsor.Diagnostics.IPotentiallyMisconfiguredComponentsDiagnostic'から 'Castle.Windsor.Diagnostics.IDiagnostic
Peri、私のためにコードがコンパイルされました。城3.2下.net 4 – samy