以特定顺序调用不同依赖项的函数的单元测试

时间:2014-10-21 12:10:24

标签: c# unit-testing mocking

我有一个具有4个依赖项和一个核心函数的类,它以特定顺序从每个依赖项调用方法。该函数看起来像这样:

Foo():
    A.a();
    B.b();
    C.c();
    D.d();

必须首先调用函数a。然后b。然后c。然后d。

我如何对此进行单元测试?我已经读过你不应该在一次测试中模拟多个对象。

如果我遇到这样的情况,我的设计是否有缺陷?我想我想折射器只有3个依赖,但它仍然没有解决我的问题。

另外,关于测试的一个非常普遍的问题:我对这个课程的测试感觉有点傻。我需要编写一个测试来确保调用每个函数?显然是一个被称为。写测试时感觉毫无意义。

我使用c#和moq进行模拟。

1 个答案:

答案 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