0

カーネル モジュールのすべてのバインディングが正しいターゲットに設定されているかどうかを単体テストしたいと考えています。私が見つけた最も簡単な方法は、モジュールをロードしてカーネルを作成し、すべてのバインドされたタイプを取得して、それが正しいものかどうかを確認することでした:

this.kernel = new StandardKernel(new MainKernelModule());
Assert.That(this.kernel.Get<IMyClass>() is MyClass);

ただし、一部のクラスはサーバーへの接続に依存しているため、単体テストでは使用しないでください。そのため、単体テスト環境でカーネルがこのクラスを作成することはできません。

私の質問: IBinding のターゲット クラスを取得するにはどうすればよいですか?

var module = new MainKernelModule();
var kernel = new StandardKernel(module);

foreach (IBinding binding in module.Bindings)
{
     // if (binding.BindingTarget is MyClass)
     // Debug.WriteLine("Yeah");
}

誰かが私を助けてくれることを願っています。残念ながら、グーグルで何も見つかりませんでした。

前もって感謝します。

4

1 に答える 1

1

のターゲットクラスを教えてください。

Bind<IFoo>().ToMethod(ctx=> IsItSunny() ? New SunnyFoo() : BadWeatherFoo())

私たちが通常行うことは、バインディングを直接テストしないことです。ただし、統合テストを作成するには、インターフェイスクラスを他のシステム(DBアクセスやWebサービスなど)にモックで置き換えて、システムの機能をテストします。これにより、ほとんどすべてのバインディングの問題が検出されます。手動統合テストを実行すると、外部システムへの誤ったバインドの小さなリスクが非常に迅速に検出されます。

于 2012-08-17T23:59:45.827 に答える