如何使用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模拟没有接口的类?的主要内容,如果未能解决你的问题,请参考以下文章
使用 PetaPoco 与 StructureMap 的共享连接