首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用mockMvc -AssertionError检查响应正文中的值:状态为expected:<201>但为was:<400>

使用mockMvc进行单元测试时,可以使用andExpect方法来检查响应的状态码和响应正文中的值。在这个问题中,我们想要检查响应的状态码是否为201,但实际上返回的状态码是400。

要使用mockMvc进行断言检查,可以按照以下步骤进行操作:

  1. 首先,导入MockMvc类和相关的断言类,例如MockMvcResultMatchersMockMvcResultHandlers
代码语言:txt
复制
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
  1. 在测试方法中,创建一个MockMvc实例,并使用perform方法执行请求。
代码语言:txt
复制
MockMvc mockMvc = MockMvcBuilders.standaloneSetup(yourController).build();
mockMvc.perform(yourRequest)
  1. 在执行请求后,使用andExpect方法来断言响应的状态码和响应正文中的值。
代码语言:txt
复制
mockMvc.perform(yourRequest)
    .andExpect(MockMvcResultMatchers.status().isCreated())
    .andExpect(MockMvcResultMatchers.content().string("expectedValue"))

其中,isCreated()用于检查状态码是否为201,content().string("expectedValue")用于检查响应正文中的值是否为"expectedValue"。

如果断言失败,将会抛出AssertionError异常,并显示实际的状态码和响应正文中的值。

关于mockMvc的更多用法和示例,可以参考腾讯云的相关文档和示例代码:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

单元测试(Spring)

单元测试是指对软件中最小可测试单元进行检查和验证,是软件开发过程中要进行最低级别的测试活动,软件独立单元将在与程序其他部分相隔离情况下进行测试。...@Parameters,返回Collection公共静态方法,并初始化所有需要测试参数对 38 @Parameterized.Parameters 39 public static...中excute()方法 48 Assert.assertEquals(expected, result); 49 } 50 } 参数化测试五个步骤: (1)为准备使用参数化测试测试类指定特殊运行器...org.junit.runners.Parameterized; (2)测试类声明几个变量,分别用于存放期望和测试所用数据; (3)测试类声明一个带有参数公共构造函数,并在其中第二个环节中声明几个变量赋值...; (4)测试类声明一个使用注解org.junit.runners.Parameterized.Parameters修饰,返回 java.util.Collection公共静态方法,并在此方法中初始化所有需要测试参数对

4.7K10

13 个设计 REST API 最佳实践

你可能知道,HTTP 中你可以返回带有 200 状态错误响应这是十分糟糕。不要这么做,你应当返回与返回错误类型相一致具有一定含义状态码。...当然可以,不过让我讲一个故事: 我曾经使用过一个 API,对于它返回所有响应状态码均是 200 OK,同时通过响应数据中 status 字段来表示当前请求是否成功,比如: {...正因为这样,我不得不在检查响应状态码正确同时,还需校验这个具有特殊含义 status 字段,才可以放心处理响应返回 data。...所以,使用正确状态码,同时仅在响应 body 中返回错误信息,并设置正确头部,比如: HTTP/1.1 400 Bad Request Content-Type: application/json...我分享两种特别适合使用 202 Accepted 状态业务场景: 如果资源是经过位于将来一系列处理流程之后才创建,比如当某项作业完成时 如果资源已经存在,这是理想状态,因此不应该被识别为一个错误时

3.6K20
  • 实战:Spring Boot 程序如何做好 Web 层测试

    引言 本文将讨论如何针对 Spring Boot 程序 Web 层进行测试,借助 MockMvc API 以及常见测试库实现 Web 层方法测试覆盖,以及如何定制 MockMvc。...,程序中所有配置过 Bean 都会被创建到这个应用上下文中,比如 Controller 类所依赖一些 Service 组件或者配置组件。...另外,上述测试方法实现里通过status().isOk()断言了响应 200,通过 jsonPath("$.username").value("test") 断言了响应结果 json 数据时,username...字段 test,这里借助了 MockMvcResultMatchers.jsonPath 实现对 json 数据快速提取,想要进一步学习的话可以搜索 jsonPath 了解。...MockMvc 进阶 前面我们使用 MockMvc 是由 Spring 帮我们注入,如果我们想要自定义 MockMvc,又该如何做呢?

    97620

    手把手教你实战TDD

    02 TDD基本理解 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树结构,转换完成后将通过表达式引擎解析表达式并取得正确...03 TDD常见误区 理解,首先 MCube 会依据模板缓存状态判断是否需要网络获取最新模板,当获取到模板后进行模板加载,加载阶段会将产物转换为视图树结构,转换完成后将通过表达式引擎解析表达式并取得正确...单元测试是指对软件中最小可测试单元进行检查和验证过程,通常是对代码单个函数或方法进行测试。单元测试对象是代码中最小可测试单元,通常是一个函数或方法。...如果实在想测一下,可以使用MockMvc。...对象单元测试,主要是必须覆盖其业务规则,以ArticleTitle这个对象例: public class ArticleTitle implements ValueObject<String

    38521

    如何对Spring MVC中Controller进行单元测试

    如下将详细阐述如何使用MockMvc测试框架实现对“Spring Controller”进行单元测试,基于Spring Boot开发框架进行验证。 添加测试框架依赖: <!...simple/get").accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) // 预期响应状态...200 .andExpect(content().string("OK")) // 预期返回字符串“OK” .andDo(print()); } 相比于使用...Junit断言工具判断返回结果,在MockMvc框架中直接定义预期结果进行断言检查更加简洁。...写在最后 使用Spring提供测试框架MockMvc可以非常方便地实现对HTTP服务接口进行单元测试,不要把基础功能验证工作都交给测试童鞋,应该通过单元测试来保证代码迭代稳定性。

    2.3K30

    还在Bug不断?不妨试试这2个装__技巧

    虽然try……except……语法能够确保程序能够跳过异常代码片段,无论如何都继续执行下去,但有时主动触发报错和异常也是一种行之有效程序员装X护体方法。...02 assert:断言 assert一般用于函数和类内部,在执行具体逻辑前首先对输入参数和程序执行状态进行一定检查和预判,仅当执行状态满足时才继续执行后续逻辑,否则断言条件不满足,引发后续提示...assert关键字基本用法: assert "条件判断", "条件不满足时输出提示信息" 例如,设计一个两数相除函数,那么应当在执行相除前检查: 两个输入参数是否数值型 除数是否不为0 这一条件判断可用...y` expected to be 'int' or 'float' type 由于输入参数y是字符串类型,断言失败,引发断言错误 相较于try……except……用法,assert最大意义在于能够及时发现程序中未按预期状态执行错误...某种程度上,raise灵活性要比assert低,在个人实际使用过程中也几乎很少用到。

    63520

    【原创】关于Spring中参数校验一点思考

    下面我会通过实例程序演示如何在 Java 程序中尤其是 Spring 程序中优雅地进行参数验证。...JSR提供校验注解: •@Null 被注释元素必须 null•@NotNull 被注释元素必须不为 null•@AssertTrue 被注释元素必须 true •@AssertFalse 被注释元素必须...false•@Min(value) 被注释元素必须是一个数字,其必须大于等于指定最小•@Max(value) 被注释元素必须是一个数字,其必须小于等于指定最大•@DecimalMin(...value) 被注释元素必须是一个数字,其必须大于等于指定最小•@DecimalMax(value) 被注释元素必须是一个数字,其必须小于等于指定最大•@Size(max=, min=)...默认情况下,Spring会将此异常转换为HTTP Status 400(错误请求)。

    97310

    REST API 设计最佳实践:如何构建、设计和使用 API ?

    它必须设置application/json。..."error": "Expected at least three items in the list." } } 因此,我必须检查状态代码和临时状态字段,以确保一切正常后才能读取数据。...HTTP/1.1 400 Bad Request Content-Type: application/json{ "error": "Expected at least three items...例如,如果你选择某个POST端点返回201 Created,那么对于每个POST端点都应使用相同HTTP状态码。为什么?因为消费者不应该担心在哪种情况下哪个方法在哪个端点上会返回哪个状态码。...如果资源以某种方式已经存在,这不应被视为错误。 13. 使用专门针对REST API网络框架 作为最后一个最佳实践,让我们讨论这个问题:如何在您API中实际应用最佳实践?

    42140

    接口自动化测试,一键快速校验接口返回全部字段

    当接口返回字段数量本身就很少时,接口断言操作一般都很容易就能实现,当接口返回字段特别多,结构特别复杂时,例如响应字段数量达到了成百上千时,如何快速实现全部返回字段校验?...由于当今大部分接口都是基于Restful API,后续我介绍中,我们假设接口响应体格式以JSON例。...改变具体内容,如实际返回Yours Truly,而预期Yours。 看完了这个,相信此时你,对Deepdiff在接口测试中使用,已经有了一些感觉了。...接着你肯定会提出疑问,有些接口返回,并不是固定,那比如校验呢。...比如某个时间戳字段,每次调用接口时,返回字段都是不一样,针对这类只知道数据规则,数据本身一开始是无法确定,又该如何结合Deepdiff来使用呢?别急,再接着往下看。

    84941

    API OWASP 标准

    规范包含请求和响应模式 请求和响应模式和示例经过格式验证,示例通过模式验证 URI API 使用 HTTPS(或在特殊情况下使用其他带加密状态协议) 在组织官方域下发布 API 可见域与其他...HTTP 状态码 404 用于错误 URL 400 -responses 有特定错误附加信息(例如缺少必需属性) 当 API 使用使用错误凭证时使用 401 -response 403 使用有效请求...,但不是关于确切错误(堆栈跟踪或错误文本)非常清晰普通消息,这可能会将内部实现暴露给 API 使用者 GET: 200 OK 和 items -array 作为空数组 GET:204 空响应,正文中没有任何内容...如果使用 ISO 标准中地理坐标? 有效负载本地化支持或可通过 API 访问本地化? 支持错误消息本地化吗?...规范包含标准格式请求和响应示例,API 文档根据规范、模式和示例自动生成 POST, PUT: 201 创建新资源而创建 来自客户端 400 个错误请求,例如缺少必需查询参数 白名单:POST、

    2.6K20

    快速学会Springboot中编写Mock单元测试

    简单讲解一下 MockMvc 执行一个模拟get请求然后期望结果是expect Json字符串并且将相应对象打印了出来(下图1标识)。...一旦请求不通过将抛出java.lang.AssertionError错误, 会把期望Expected)跟实际打印出来(下图2标识)。如果跟预期相同只会出现下图1。 ?...拿上面的BookService来说,假如其实现类逻辑还没有确定,我们可以通过规定其入参以及对应返回来模拟这个bean逻辑,或者根据某个情形下进行某个路由操作选择(如果入参是A则结果B,如果C...,如果C则D这种路由操作。...6.其他 内置assertj也是常用断言,api非常友好,这里也简单演示一下 ? 7.总结 本文中实现了一些简单Spring Boot启用集成测试。

    7K10

    SpringBoot基础之MockMvc单元测试

    本篇文章就围绕MockMvc在SpringBoot中使用进行讲解。 什么是Mock 在面向对象程序设计中,模拟对象(英语:mock object)是以可控方式模拟真实对象行为假对象。...,在测试之前可能需要初始化); 真实对象是用户界面,或包括用户界面在内; 真实对象使用了回调机制; 真实对象可能还不存在; 真实对象可能包含不能用作测试(而不是实际工作)信息和方法。...使用Mockito一般分三个步骤:1、模拟测试类所需外部依赖;2、执行测试代码;3、判断执行结果是否达到预期; MockMvc MockMvc是由spring-test包提供,实现了对Http请求模拟...*/ mockMvc.perform(MockMvcRequestBuilders .get("/hello") // 设置返回类型utf-8,否则默认为ISO-8859-1 ....ResultActions,MockMvc.perform(RequestBuilder requestBuilder)返回,提供三种能力:andExpect,添加断言判断结果是否达到预期;andDo

    11.7K21

    接口自动化测试,一键快速校验接口返回全部字段

    当接口返回字段数量本身就很少时,接口断言操作一般都很容易就能实现,当接口返回字段特别多,结构特别复杂时,例如响应字段数量达到了成百上千时,如何快速实现全部返回字段校验?...由于当今大部分接口都是基于Restful API,后续我介绍中,我们假设接口响应体格式以JSON例。...改变具体内容,如实际返回Yours Truly,而预期Yours。 看完了这个,相信此时你,对Deepdiff在接口测试中使用,已经有了一些感觉了。...接着你肯定会提出疑问,有些接口返回,并不是固定,那比如校验呢。...比如某个时间戳字段,每次调用接口时,返回字段都是不一样,针对这类只知道数据规则,数据本身一开始是无法确定,又该如何结合Deepdiff来使用呢?别急,再接着往下看。

    1.9K01

    如何在 SpringSpring Boot 中做参数校验?你需要了解都在这里!

    我个人觉得这个和统一异常处理一样是后端很容易做好一件事情,同时也是很有必要事情。如果对后端如何统一异常处理不太清楚朋友,也可以留言一下,我后面会分享自己在项目中学到统一异常处理方法。...下面我会通过实例程序演示如何在 Java 程序中尤其是 Spring 程序中优雅地进行参数验证。...JSR提供校验注解: @Null 被注释元素必须 null @NotNull 被注释元素必须不为 null @AssertTrue 被注释元素必须 true @AssertFalse...被注释元素必须 false @Min(value) 被注释元素必须是一个数字,其必须大于等于指定最小 @Max(value) 被注释元素必须是一个数字,其必须小于等于指定最大...默认情况下,Spring会将此异常转换为HTTP Status 400(错误请求)。

    1.3K50
    领券