Java 如何在删除时使用mockito创建JUnit

Java 如何在删除时使用mockito创建JUnit,java,intellij-idea,junit,mockito,powermock,Java,Intellij Idea,Junit,Mockito,Powermock,我需要你们的帮助 我想对这段代码进行测试: //Delete - Patient void deletePatient(long id) throws PatientNotFoundException { long deletedRecord = clientWrapperWrite.deleteSingle(PATIENT_COLLECTION_NAME, id); if (deletedRecord == 0) { throw new PatientNotFo

我需要你们的帮助

我想对这段代码进行测试:

//Delete - Patient
void deletePatient(long id) throws PatientNotFoundException {
    long deletedRecord = clientWrapperWrite.deleteSingle(PATIENT_COLLECTION_NAME, id);
    if (deletedRecord == 0) {
        throw new PatientNotFoundException(id);
    }
}
这就是我为考试做的

   //Delete Patient TestUnit - OnProgress (SOS)
@Test
public void deletingEmptyPatient() throws PatientNotFoundException, IOException {
    MongoClientWrapper mockClientWrapperWrite = mock(MongoClientWrapper.class);
    MongoClientWrapper mockClientWrapperRead = mock(MongoClientWrapper.class);
    when(mockClientWrapperRead.getSingle("patient",10001L)).thenReturn(createSinglePatient().toJson());
    Patient dummyPatient = createSinglePatient();

    myPatientFacade = MyPatientFacadeBuilder.create("conf/mypatient-server-test.properties")
            .withMongoClientWrapperRead(mockClientWrapperRead)
            .withMongoClientWrapperWrite(mockClientWrapperWrite)
            .build();

    myPatientFacade.addSinglePatient(dummyPatient);
    myPatientFacade.deletePatient(10001L);

    thrownException.expect(PatientVisitNotFoundException.class);
    thrownException.expectMessage("Patient ID '10001' cannot be found.");

    verify(mockClientWrapperWrite,times(1))
           .deleteSingle("patient",10001L);

}
我还在学习如何使用JUnit和mockito。请引导我。 谢谢你过来,祝你今天愉快

============================================================================

更新:

因此,错误是说
com.at.mypatient.cosmed.exceptions.PatientNotFoundException:找不到患者ID“10001”。


我想做的是,制作患者模拟器的单元然后运行删除并验证删除。

请使用H2或HSQL并准备单独的存储库层测试用例,而不是来自控制器层

遵循步骤

  • 插入一条记录
  • 选择记录(大小应大于1)
  • 删除各自的记录
  • 选择记录并验证(大小为零或空异常)

很高兴进一步提供帮助

您似乎忘记添加调试器告诉您的内容了?如果您有stacktrace,您可能需要添加它。另一方面,我必须同意
@SwaritAgarwal
,你最好为这个问题编写
集成测试。请避免在你的问题中添加文本图像。而是直接复制粘贴堆栈跟踪。这就是说:您还没有在mock上定义任何行为,因此
clientWrapperWrite.deletesSingle
将返回0,这将触发您的异常。行为与您期望的有什么不同?请附加包含测试输出的文本,并说出您期望的内容。看起来您在错误的模拟上定义了行为,请改用
mockClientWrapperWrite
。还要确保您的Dummy患者具有id
10001L