簡體   English   中英

mock對象返回具有相同參數的真實對象

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM