我有以下代码,应该将文档插入到MongoDB集合中,如下所示(注意,我在类上方有@ Slf4j批注,应该让我使用日志):
public Document functionName(Document document) {
return reactiveMongoTemplate.insert(document)
.doOnSuccess(param -> log.info("Successfully saved"))
.onErrorResume(e -> {
String message = format("Error saving %s", e.getMessage());
log.error(message, e);
throw new Exception(message, e);
})
.block();
}
当我为此做一个单元测试用例并测试了功能时,当我真的希望测试能够通过时,在doOnSuccess的行上我得到了一个空指针异常。我在这里缺少对reactMongoTemplate特定的东西吗?
这里是单元测试:
@Test
void successfulMongoInsertion() {
String xmlString = "<header>\n" +
" <to>Me</to>\n" +
" <from>You</from>\n" +
"</header>";
JSONObject json = XML.toJSONObject(xmlString);
Document xmlDocument = Document.parse(json.toString());
service.functionName(xmlDocument);
ArgumentCaptor<Document> captor = ArgumentCaptor.forClass(Document.class);
verify(reactiveMongoTemplate).insert(captor.capture());
Document retrievedDocument = captor.getValue();
assertTrue(xmlDocument.equals(retrievedDocument));
}
服务是具有我之前包含的functionName方法的对象。