Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ninject Moqing内核(重置做什么?)_Ninject_Moq - Fatal编程技术网

Ninject Moqing内核(重置做什么?)

Ninject Moqing内核(重置做什么?),ninject,moq,Ninject,Moq,我有一个接口,我正在使用几个不同的具体类。我希望有这样的事情 _kernel.GetMock<ISerializeToFile>().Named("MyRegisteredName") .Setup(x => x.Read<ObservableCollection<PointCtTestDataInput>>( It.IsAny<string>())); \u kernel.GetMock().Named(“MyRe

我有一个接口,我正在使用几个不同的具体类。我希望有这样的事情

_kernel.GetMock<ISerializeToFile>().Named("MyRegisteredName")
    .Setup(x => x.Read<ObservableCollection<PointCtTestDataInput>>(
        It.IsAny<string>()));
\u kernel.GetMock().Named(“MyRegisteredName”)
.设置(x=>x.读取(
It.IsAny());
我正在从事的项目使用了服务定位器模式——我一直不太喜欢的反模式

起初我试着

[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>()));
}
[分类初始化]
公共静态void ClassInitialize(TestContext TestContext)
{
_kernel=新的MoqMockingKernel();
}
[测试初始化]
public void TestInitialize()
{
_Reset();
ServiceLocator.SetLocatorProvider(
()=>新的NinjectServiceLocator(_内核));
_kernel.Bind().ToMock()
.InSingletonScope().Named(“ObjectToFile”);
_kernel.GetMock()
.设置(x=>x.读取(
It.IsAny());
_kernel.GetMock()
.Setup(x=>x.Save(
It.IsAny(),
It.IsAny());
}

我得到了一个标准的Ninject错误,指出有多个匹配的绑定可用。因此,我移动了
\u kernel=new MoqMockingKernel()进入测试初始化,然后错误消失。。。也许我猜错了_kernel.Reset()的作用了?

Reset会从缓存中删除任何实例。它不会删除现有绑定。因此,第二个测试将有两次ISerializeToFile。

重置从缓存中删除任何实例。它不会删除现有绑定。因此,第二个测试将有两次ISerializeToFile