Naf*_*ema 7 java junit mockito spring-boot junit5
我已经实现了一个简单的 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);
}
}
Run Code Online (Sandbox Code Playgroud)
服务测试类
@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;
}
}
Run Code Online (Sandbox Code Playgroud)
Ahm*_*ady 16
您可以在模拟上使用 doNothing 或 doThrow 来模拟模拟的行为。
Mockito.doNothing().when(employeeDAO).delete(any());
Run Code Online (Sandbox Code Playgroud)
或者
Mockito.doThrow(new RuntimeException()).when(employeeDAO).delete(any());
Run Code Online (Sandbox Code Playgroud)
然而,实际上并不需要 doNothing,因为这将是具有 void 返回类型的模拟函数的默认行为。然而,您可能希望verify调用此方法。例如:
verify(employeeDAO).delete(any());
Run Code Online (Sandbox Code Playgroud)
小智 6
您可以使用Mockito.doNothing():
Mockito.doNothing().when(employeeDAO).deleteEmployee(Mockito.any());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30761 次 |
| 最近记录: |