【发布时间】:2020-01-29 16:41:12
【问题描述】:
我正在努力学习spring,我找不到足够的资源进行测试,对不起我的英语:) 我有一个控制器类,它返回 ResponseEntity
@RestController
@RequestMapping("/")
public class OrderController {
@Autowired
private OrderRepository rep;
@GetMapping("/{id}")
public ResponseEntity<?> getOrderById(@PathVariable("id") String id){
Order or = rep.findById(id).get();
return ResponseEntity.ok(or); }
@PostMapping("/add")
public ResponseEntity<?> addOrder(@RequestBody Order order){
rep.save(order);
return ResponseEntity.ok(order);
}
我正在尝试使用
@RunWith(SpringRunner.class)
@WebMvcTest(OrderController.class)
public class OrderControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private OrderRepository orderRepository;
@Test
public void shouldPresistOrder() throws Exception {
this.mockMvc.perform(get("/ORD00001").accept("application/json"))
.andExpect(status().isOk());}}
我得到了预期的状态但是是 我是否需要先创建一个 Order 实例,因为它是一个包含很多变量的非常大的类? 端点测试方法有哪些?是否有任何书籍或在线资源仅用于 MVC 测试目的?非常感谢
【问题讨论】:
-
在您的情况下,您可以先调用
addOrder,然后使用之前创建的order id调用getOrderById。但是您将订单存储在哪里?在内存或某种数据库中?如果是数据库,您可能需要在测试开始之前模拟/启动数据库。
标签: java spring-boot unit-testing spring-mvc spring-data-jpa