1

いくつかの異なる具体的なクラスで使用しているインターフェイスがあります。こんなものがあったらいいのに…。

_kernel.GetMock<ISerializeToFile>().Named("MyRegisteredName")
    .Setup(x => x.Read<ObservableCollection<PointCtTestDataInput>>(
        It.IsAny<string>()));

私が取り組んでいるプロジェクトでは、サービス ロケーター パターン (アンチ パターン) を使用しています。

もともとやってみた..

[ClassInitialize]
public static void ClassInitialize(TestContext testContext)
{
    _kernel = new MoqMockingKernel();
}

[TestInitialize]
public void TestInitialize()
{
    _kernel.Reset();
    ServiceLocator.SetLocatorProvider(
        () => new NinjectServiceLocator(_kernel));
    _kernel.Bind<ISerializeToFile>().ToMock()
        .InSingletonScope().Named("ObjectToFile");
    _kernel.GetMock<ISerializeToFile>()
        .Setup(x => x.Read<ObservableCollection<PointCtTestDataInput>>(
            It.IsAny<string>()));
    _kernel.GetMock<ISerializeToFile>()
        .Setup(x => x.Save<ObservableCollection<PointCtTestDataInput>>(
            It.IsAny<ObservableCollection<PointCtTestDataInput>>(), 
            It.IsAny<string>()));
}

複数の一致するバインディングが利用可能であることを示す標準の Ninject エラーが発生しました。だから、私_kernel = new MoqMockingKernel(); は TestInitialize に移動し、その後、そのエラーは消えました...おそらく、_kernel.Reset() が何をするかについて間違って推測していますか?

4

1 に答える 1