【发布时间】:2021-05-18 18:51:06
【问题描述】:
我有一个用 Spring Boot 编写的 REST API。
现在我想用 JUnit 和 Mockito 创建单元测试来模拟数据库操作。
这是将新客户插入数据库的端点。
@RestController
public class CustomerController {
@Autowired
private CustomerRepository customerRepository;
@PostMapping(value="/customers", produces = "application/json")
public ResponseEntity<Customer> addCustomer(@RequestBody Customer customer){
Customer newCustomer = customerRepository.save(customer);
return new ResponseEntity<Customer>(newCustomer, HttpStatus.OK) ;
}
测试:
@Test
public void testAddCustomer() {
Customer customer = Mockito.mock(Customer.class);
customer.setIdCustomer(1L);
customer.setName("Pete");
customer.setAge(35);
customer.setEmail("pete@test.com");
when(customerRepository.save(customer)).thenReturn((Customer) Stream.of(customer));
CustomerController customerController = new CustomerController();
ResponseEntity<Customer> respCustomer = customerController.addCustomer(customer);
assertTrue(respCustomer.getBody().getIdCustomer() != null);
}
我在以下行收到空指针异常:
when(customerRepository.save(customer)).thenReturn((Customer) Stream.of(customer));
【问题讨论】:
标签: java spring-boot junit mockito spring-data