在 Easymock 中模拟链式方法调用的简单方法

Qua*_*ent 5 easymock

有没有一种简单的方法来模拟这个调用:

objectA.getB().getC();
Run Code Online (Sandbox Code Playgroud)

现在我这样做的方式是:

A mockA = EasyMock.createMock(A.class);
B mockB = EasyMock.createMock(B.class);
C mockC = EasyMock.createMock(C.class);

expect(mockA.getB()).andReturn(mockB);
expect(mockB.getC()).andReturn(mockC);
Run Code Online (Sandbox Code Playgroud)

这有点矫枉过正,因为我只关心获得 mockC。有没有更简单的方法来做到这一点?

Tam*_*ese 0

不,如果您想替换 ,则不存在 \xe2\x80\x93 AB并且C在使用模拟的测试中,您需要三个模拟对象。

\n\n

另一种方法是使用真实AB类,并且仅用C模拟对象替换。然后你的单元测试将测试

\n\n
    \n
  1. 包含的类objectA.getB().getC()
  2. \n
  3. A
  4. \n
  5. B
  6. \n
\n\n

作为一个“单位”在一起。这是否有意义,取决于具体情况。

\n