【问题标题】:How do I mock a class without an interface using StructureMap's AutoMocker?如何使用 StructureMap 的 AutoMocker 模拟没有接口的类?
【发布时间】:2011-10-14 19:43:04
【问题描述】:

我是测试的忠实拥护者,我认为必须创建额外的接口才能编写单元测试是很小的代价。我已经在测试套件中添加了结构映射 automocker,它似乎绝对无法模拟类。只要公共方法被标记为虚拟,Rhino mock 就可以模拟公共类。

如果可能,我想摆脱接口。任何和所有帮助表示赞赏。

【问题讨论】:

    标签: structuremap-automocking


    【解决方案1】:

    在回答这个问题之前,我只想指出,当您不使用接口时,它完全违背了使用 StructureMap 的目的。 (嗯,不完全,但足以让我质疑你为什么决定首先使用 StructureMap 的目的......)如果没有接口,你不会在测试中走得太远,或者如果如果这样做,您将把所有逻辑放在一个类或 20-30 个类中,所有类都紧密耦合,这再次错过了使用 StructureMap 的意义。话虽如此,我认为这应该适用于您需要模拟一个具体类的情况

    [Test]
    public void TestMethod()
    {
        // Arrange
        var service = new RhinoAutoMocker<BusinessRuleService>();
        service.PartialMockTheClassUnderTest();
        service.ClassUnderTest.Expect(x => x.VirtualMethodImTesting());
    
        // Act
        service.ClassUnderTest.CallableMethod();
    
        // Assert
        service.ClassUnderTest.VerifyAllExpectations();
        // ... or other stuff ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多