簡體   English   中英

JUnit 中帶有 void 方法的 Mockito

[英]Mockito with void method in JUnit

我已經實現了一個簡單的 spring boot crud 應用程序來編寫測試用例。 我在刪除操作時遇到了一些麻煩。 當我使用Mockito.when方法時,它需要一個返回值,而我的刪除方法是非返回類型。

服務等級

@Service
public class EmployeeServiceImpl  implements EmployeeService {

    private EmployeeDAO employeeDAO;

    @Autowired
    public EmployeeServiceImpl(EmployeeDAO employeeDAO)
    {
        this.employeeDAO=employeeDAO;
    }

    @Override
    public void deleteEmployee(Employee emp) throws IllegalArgumentException{
             employeeDAO.delete(emp);
    }

}

服務測試類

@ExtendWith(SpringExtension.class)
@SpringBootTest
public class EmployeeServiceImplTest {

    @MockBean
    private EmployeeDAO employeeDAO;

    @Autowired
    private EmployeeService employeeService;

@Test
public void testDeleteEmployee()
{
    int empId=1054;
    Employee employee=employee_2();
    employee.setEmpId(empId);

   // how to write test case for void method
}

private Employee employee_2()
    {
        Employee employee=new Employee();
        employee.setEmpName("NafazBenzema");
        employee.setSalary(12000.00);

        return employee;
    }

}

您可以使用Mockito.doNoting()

Mockito.doNothing().when(employeeDAO).deleteEmployee(any());

您可以在模擬上使用 doNothing 或 doThrow 來模擬模擬的行為。

Mockito.doNothing().when(employeeDAO).delete(any());

或者

Mockito.doThrow(new RuntimeException()).when(employeeDAO).delete(any());

但是,實際上不需要 doNothing,因為這將是具有 void 返回類型的模擬函數的默認行為。 但是,您可能想要verify調用了此方法。 例如:

verify(employeeDAO).delete(any());

謝謝你。

但對我來說,我不得不更換employeeServiceemployeeDAO .The employeeService與注解@Autowired注釋和它拋出NotaMockAnnotation例外。

   Mockito.doNothing().when(employeeDAO).delete(employee);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM