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