Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 弹簧MVC测试_Java_Spring Boot_Unit Testing_Spring Mvc_Spring Data Jpa - Fatal编程技术网

Java 弹簧MVC测试

Java 弹簧MVC测试,java,spring-boot,unit-testing,spring-mvc,spring-data-jpa,Java,Spring Boot,Unit Testing,Spring Mvc,Spring Data Jpa,我正在努力学习spring,但我找不到足够的测试资源,很抱歉我的英语:) 我有一个返回ResponseEntity的控制器类 @RestController @RequestMapping("/") public class OrderController { @Autowired private OrderRepository rep; @GetMapping("/{id}") public ResponseEntity<?&g

我正在努力学习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);
}
我得到了预期的状态,但被 我是否需要先创建一个Order实例,因为它是一个非常大的类,有很多变量?
测试端点的方法是什么?是否有专门用于MVC测试的书籍或在线资源?非常感谢

您在嘲笑OrderRepository类,但是没有与之相关的规则, 创建一个虚拟的订单并添加如下规则
when(orderRepository.findById()).thenReturn(DummyOrder)

通过这种方式,您可以为OrderRepository设置规则,以根据您的需要进行操作。

在您的情况下,您可以先调用
addOrder
,然后使用前面创建的
order id
调用
getOrderById
。但是你在哪里存储订单呢?在内存中还是在某种数据库中?如果是数据库,您可能需要在测试开始之前模拟/启动数据库。是否需要手动填充Order类?订单=新订单();order.setId;order.setName。。。。我得到:“不适用于参数(Order)”Order=Mockito.mock(Order.class);Mockito.when(orderRepository.findById(anyString())。然后返回(order);是,您需要手动填充订单类。请注意,返回的订单应为可选订单object@Testpublic void shouldPresistOrder()引发异常{Order o=new Order(“order00001”,“ABCD”…)Optional Order=Optional.of(o);when(orderRepository.findById(“/order00001”)。thenReturn(Order);this.mockMvc.perform(get(“/ORD00001”).accept(“application/json”).andExpect(status().isOk());我仍然获得预期状态,但是是?您能否调试代码并检查rep对象id是否与您的控制器相同?
 @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());}}