【问题标题】:Ninject Moqing Kernel (what does reset do?)Ninject Moqing Kernel(reset有什么作用?)
【发布时间】:2013-09-01 18:07:46
【问题描述】:

我有一个与几个不同的具体类一起使用的接口。我希望有这样的东西......

_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() 的作用?

【问题讨论】:

    标签: ninject moq


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-10
      • 2016-11-05
      • 2021-07-04
      • 1970-01-01
      • 2020-06-22
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      相关资源
      最近更新 更多