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

时间:2011-10-14 19:43:04

标签: structuremap-automocking

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

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

1 个答案:

答案 0 :(得分: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 ...
}