如何使用StructureMap的AutoMocker模拟没有接口的类?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用StructureMap的AutoMocker模拟没有接口的类?相关的知识,希望对你有一定的参考价值。

我是测试的巨大支持者,我认为必须创建额外的接口才能编写单元测试是很小的代价。我已经为测试套件添加了结构图自动插件,它似乎绝对无法模拟类。只要公共方法被标记为虚拟,Rhino mock就能够模拟公共类。

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

答案

在回答这个问题之前,我想指出,当你不使用接口时,它完全违背了使用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 ...
}

以上是关于如何使用StructureMap的AutoMocker模拟没有接口的类?的主要内容,如果未能解决你的问题,请参考以下文章

使用 StructureMap 3.* 拦截

StructureMap

使用 PetaPoco 与 StructureMap 的共享连接

比较温莎城堡、Unity 和 StructureMap

抽象类是不是像接口一样与 StructureMap 一起使用?

Structuremap 是不是支持开箱即用的 Lazy?