我有一个具有4个依赖项和一个核心函数的类,它以特定顺序从每个依赖项调用方法。该函数看起来像这样:
Foo():
A.a();
B.b();
C.c();
D.d();
必须首先调用函数a。然后b。然后c。然后d。
我如何对此进行单元测试?我已经读过你不应该在一次测试中模拟多个对象。
如果我遇到这样的情况,我的设计是否有缺陷?我想我想折射器只有3个依赖,但它仍然没有解决我的问题。
另外,关于测试的一个非常普遍的问题:我对这个课程的测试感觉有点傻。我需要编写一个测试来确保调用每个函数?显然是一个被称为。写测试时感觉毫无意义。
我使用c#和moq进行模拟。
答案 0 :(得分:1)
我所知道的使用moq测试这个问题的唯一方法是进行一些稍微复杂的回调。
类似这样的事情
bool aCalled = false;
bool bCalled = false;
bool cCalled = false;
bool dCalled = false;
Mock<A> mockA = new Mock<A>();
mockA.Setup(x => x.a())
.Callback(aCalled=true);
Mock<B> mockB = new Mock<B>();
mockB.Setup(x => x.b())
.Callback(if (aCalled){bCalled=true}else{Assert.Fail("B.b was called before A.a");
...etc for c and d