我正试图嘲笑一家工厂.在这个例子中,这个工厂有一个方法create,它接受两个args并返回一个C对象,它有一个带有相同两个args的构造函数.我想设置我的工厂,当我命令我的工厂创建一个新的C时,它返回一个真正的新C与给定的args create方法.
Mockito.when(myFactory.create(Mockito.any(A.class), Mockito.any(B.class)))
.thenReturn(new C(??, ??));
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?任何帮助将不胜感激
使用doAnswer捕捉和利用传递给嘲笑工厂调用的参数.
例如:
MyFactory myFactory = mock(MyFactory.class);
Answer<C> answer = new Answer<C>() {
public C answer(InvocationOnMock invocation) throws Throwable {
A a = invocation.getArgument(0, A.class);
B b = invocation.getArgument(1, B.class);
return new C(a, b);
}
};
// either of these ...
when(myFactory.create(Mockito.any(A.class), Mockito.any(B.class))).thenAnswer(answer);
doAnswer(answer).when(myFactory.create(Mockito.any(A.class), Mockito.any(B.class)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
687 次 |
| 最近记录: |