如何根据 Junit 5 中的某些条件抛出异常?
How to throw an exception based on some condition in Junit 5?
我有一个 spring 使用 Junit 5 和 Mockito 的启动应用程序。
我有以下代码。
@Autowired
CustomerRepo customerRepo;
public UpdatedCustomer updateCustomer(Customer customer) {
UpdatedCustomer updCustomer = new UpdatedCustomer();
updCustomer.setId(customer.getId());
//some more setters
//Here I need to throw exceptions for the customer whose id is 5 only. Can I do this in mockito or any other framework?
customerRepo.save(updCustomer);
return updCustomer;
}
我需要为上面代码中 ID 为 5 的客户抛出异常,而对于其他客户,应该调用实际的保存实现。是否可以在 SpyBean 或任何其他方式中使用?
请多多指教。
在 Mockito
ArgumentMatcher
中是一个功能接口,您可以使用 argThat
匹配器。
@Mock
private CustomerRepo customerRepo;
@Test
void updateCustomerThrowsException() {
doThrow(RuntimeException.class)
.when(customerRepo).save(argThat(customer -> customer.getId() == 5));
var customer = new Customer();
customer.setId(5);
assertThrows(RuntimeException.class, () -> updateCustomer(customer));
}
我有一个 spring 使用 Junit 5 和 Mockito 的启动应用程序。
我有以下代码。
@Autowired
CustomerRepo customerRepo;
public UpdatedCustomer updateCustomer(Customer customer) {
UpdatedCustomer updCustomer = new UpdatedCustomer();
updCustomer.setId(customer.getId());
//some more setters
//Here I need to throw exceptions for the customer whose id is 5 only. Can I do this in mockito or any other framework?
customerRepo.save(updCustomer);
return updCustomer;
}
我需要为上面代码中 ID 为 5 的客户抛出异常,而对于其他客户,应该调用实际的保存实现。是否可以在 SpyBean 或任何其他方式中使用?
请多多指教。
在 Mockito
ArgumentMatcher
中是一个功能接口,您可以使用 argThat
匹配器。
@Mock
private CustomerRepo customerRepo;
@Test
void updateCustomerThrowsException() {
doThrow(RuntimeException.class)
.when(customerRepo).save(argThat(customer -> customer.getId() == 5));
var customer = new Customer();
customer.setId(5);
assertThrows(RuntimeException.class, () -> updateCustomer(customer));
}