[英]mock object to return a real object with same arguments
我正試圖嘲笑一家工廠。 在這個例子中,這個工廠有一個方法create
,它接受兩個args並返回一個C對象,它有一個帶有相同兩個args的構造函數。 我想設置我的工廠,當我命令我的工廠創建一個新的C時,它返回一個帶有給定args的真正的新C來create
方法。
Mockito.when(myFactory.create(Mockito.any(A.class), Mockito.any(B.class)))
.thenReturn(new C(??, ??));
我怎樣才能做到這一點? 任何幫助將不勝感激
使用doAnswer
捕獲並使用傳遞給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)));
試試這個:
MyFactory myFactory = mock(MyFactory.class);
A a = new A();
B b = new B();
doReturn(new C(a, b)).when(myFactory).create(eq(a), eq(b));
只需從hamcrest導入eq方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.