在以下情况下,我正在写junit
public void request (Message msg) {
String s = msg.getPayload().getSerial();
}
Junit
@Test
public void requestTest() {
Message msg = mock(Message.class);
Mockito.when(msg.getPayload().getSerial()).thenReturn("tet"); --> This returns null
}
任何帮助
答案 0 :(得分:3)
您还必须模拟有效载荷:
@Test
public void requestTest() {
Message msg = mock(Message.class);
Payload payload = mock(Payload.class);
Mockito.when(msg.getPayload()).thenReturn(payload);
Mockito.when(payload.getSerial()).thenReturn("tet"); --> This returns null
}
答案 1 :(得分:0)
您还可以使用DEEP STUBS
(Mockito Docu
)
Mockito.mock(Message.class, Mockito.RETURNS_DEEP_STUBS);
但是请注意,Mockito
开发人员本身在文档中添加了警告:
警告:常规清洁代码很少需要使用此功能!留给旧代码。
他们用有关Law of Demeter
的提示来解释该语句,因此您也可以考虑添加委托方法(如果Message
实际上是您控制下的对象)