使用放心模拟 mvc 修补端点测试

Posted

技术标签:

【中文标题】使用放心模拟 mvc 修补端点测试【英文标题】:patch endpoint test using rest assured mock mvc 【发布时间】:2021-11-16 20:14:13 【问题描述】:

我正在尝试使用放心的模拟 mvc 编写补丁端点测试。 但是我无法创建一个 jsonmerge 补丁的对象来放置在 mock 的主体中。下面是我需要编写测试的终点

     @PatchMapping(path = "/orderId", consumes = "application/merge-patch+json")
     public OrderDTO updateOrder(@PathVariable Long orderId, @RequestBody 
                                                       JsonMergePatchImpl patchRequest)
    return facade.patchOrder(orderId,patchRequest);



以下是我正在尝试但无法弄清楚的事情

            Mockito.when(facade.patchOrder(any(),any())).thenReturn(orderDTO);
            OrderDTO actual=given()
            .contentType(MediaType.APPLICATION_JSON_VALUE)
            .body()
            .accept("application/merge-patch+json")
            .when()
            .patch(BASE_URL+"/"+1l)
            .then()
            .assertThat()
            .statusCode(200).extract().as(OrderDTO.class);

我的问题是我无法为 jsonmerge 补丁创建对象,以及作为内容类型放入的内容

【问题讨论】:

【参考方案1】:

您可以将 contentType 指定为字符串:

.contentType("application/merge-patch+json")

【讨论】:

以上是关于使用放心模拟 mvc 修补端点测试的主要内容,如果未能解决你的问题,请参考以下文章

在 Apache Camel 应用程序中,单元测试如何注入模拟端点来代替真实端点?

Python mock 修补另一个函数调用的函数

模拟 MVC - 添加请求参数进行测试

如何使用装饰器修补sys属性?

如何在 Spring-boot 中不模拟服务类的情况下为 REST 控制器端点编写单元测试

通过 jmeter 模拟并行端点 api 使用