[英]Mockito: Mock and inject a mocked class
我目前面臨以下測試用例:我想從akka模擬抽象的ActorRef類:
@RunWith(MockitoJUnitRunner.class)
public class ConstraintBuilderTest {
@Mock
ClassANeededByClassB a;
@InjectMock
ClassB b;
@Before
public void setUp(){
Mockito.when(a.equals(a)).thenReturn(true);
}
//tests go here
}
我知道mockito頁面說它無法模擬等於。 那么有關於如何模仿的想法嗎?
ClassB上的equals方法使用ClassANeededByClassB來檢查它的相等性。
我能想到的就是在模擬的類中注入一個b。 如何最好地進行?
請注意,這些類來自一個我無法更改的框架,因此我無法更改其代碼以添加setter或類似的東西。
b
是模擬,所以你不需要注入任何東西。 畢竟它沒有執行任何真正的方法(除非你通過調用thenCallRealMethod
明確地這樣做),所以不需要注入任何ClassANeededByClassB
實現。
如果ClassB
是被測試的類或間諜,那么你需要使用@InjectMocks
注釋,它將任何匹配的@InjectMocks
注入ClassB
。
@RunWith(MockitoJUnitRunner.class)
public class ConstraintBuilderTest {
@Mock
ClassANeededByClassB a;
@InjectMocks
ClassB b;
// ...
}
如你所說,Mockito不支持嘲笑equals
。 可能有一些解決方法,但我不知道。 所以這里只是對它的一些想法:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.