代码之家  ›  专栏  ›  技术社区  ›  JamieGaines

如何使用StructureMap 2.5.3附带的MoqAutoMocker?

  •  5
  • JamieGaines  · 技术社区  · 17 年前

    我试图使用StructureMap附带的MoqAutoMocker类,但找不到任何应该如何使用它的示例。我所要做的就是 example at the StructureMap site that uses RhinoMocks .

    我想做的是使用get方法引用我的一个自动模拟/注入的依赖关系。根据上面的链接,我应该能够做这样的事情

        // This retrieves the mock object for IMockedService
        autoMocker.Get<IMockedService>().AssertWasCalled(s => s.Go());
    

    请注意如何使用AssertWasCalled,它表示Get函数返回对RhinoMocks Mock对象的引用?当我使用MoqAutoMocker时,这段代码对我不起作用。

    我有一个类SignInController,它依赖于构造函数中的ISecurityService。使用MoqAutoMocker,就像示例中使用的RhinoAutoMocker一样,我认为我应该能够做到这一点。..

    var autoMocker = new MoqAutoMocker<SignInController>();
    autoMocker.Get<ISecurityService>().Setup(ss => ss.ValidateLogin
    (It.IsAny<string>(), It.IsAny<string>())).Returns(true); 
    

    有人以这种方式成功使用MoqAutoMocker吗?我只是做错了吗?

    2 回复  |  直到 17 年前
        1
  •  10
  •   Joel Abrahamsson    17 年前

    var autoMocker = new MoqAutoMocker<SignInController>();
    var mock = autoMocker.Get<ISecurityService>();
    Mock.Get(mock).Setup(ss => ss.ValidateLogin
    (It.IsAny<string>(), It.IsAny<string>())).Returns(true);
    

    Setting Expectations With StructureMap’s MoqAutoMocker .

        2
  •  1
  •   Brian Vo    10 年前

    autoMocker.Get<ISecurityService>()
    将返回ISecurityService,您无法在其上进行安装。相反
    Mock.Get(mock)
    将返回Moq。Mock,然后你可以在上面设置。

    推荐文章