【发布时间】:2018-11-07 08:19:00
【问题描述】:
我一直在为类 ProcessorImpl 进行单元测试。在这个类中,我从另一个类 MetadataUtils 创建了一个静态 void 调用。在 MetadataUtils 类中我有:
public class MetadataUtils {
private static Metadata metadata = new Metadata();
private static ObjectMapper mapper = new ObjectMapper();
public static void setMetadataFromHeader(String header) throws JsonParseException, JsonMappingException, IOException {
metadata = mapper.readValue(header, Metadata.class);
}
...
}
在我调用的 ProcessorImpl 类中
MetadataUtils.setMetadataFromHeader(getHeader(CsbConstants.METADATA).toString());
在 ProcessorImplTest(单元测试)类中我写了:
PowerMockito.when(processor, method(ProcessorImpl.class, "getHeader"))
.withArguments(CsbConstants.METADATA)
.thenReturn(Mockito.any(String.class));
MetadataUtils metadataUtils = Mockito.mock(MetadataUtils.class);
Mockito.doNothing().when(metadataUtils).setMetadataFromHeader(Mockito.any(String.class));
但我得到了异常 InvalidUseOfMachers。你能帮忙解决吗?
【问题讨论】:
-
异常到底发生在哪一行?
-
in line MetadataUtils metadataUtils = Mockito.mock(MetadataUtils.class);
-
当你告诉一个模拟返回一些东西时,你需要告诉它返回什么。告诉它返回它想要的任何东西没有多大意义。当您询问异常时,alays 会发布异常的准确和完整的堆栈跟踪。
-
我刚刚改变了我的 doNothing: Mockito.doReturn("Test").when(metadataUtils).setMetadataFromHeader(Mockito.any(String.class));但我得到了同样的错误。我做错了吗?
-
嗯,一次一个问题,对吧?我们的目标不是移动目标。
标签: java unit-testing mockito powermockito