问题标签 [mockmvc]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
741 浏览

java - MockMvc JsonPath 跳过前缀

我还找不到该问题的解决方案...基本上我想测试一些产生 json 响应的其余资源,json 以安全字符串为前缀,例如:

"qwerty{"status":"success"}"

当然,前缀这不是一个有效的 json,因此 json 路径失败:

出现以下错误:

java.lang.IllegalArgumentException: 在 org.springframework.test 的 com.jayway.jsonpath.JsonPath.read(JsonPath.java:211) 的 com.jayway.jsonpath.JsonPath.read(JsonPath.java:180) 处的容器对象无效。 util.JsonPathExpectationsHelper.evaluateJsonPath(JsonPathExpectationsHelper.java:98) at org.springframework.test.util.JsonPathExpectationsHelper.assertValue(JsonPathExpectationsHelper.java:115) at org.springframework.test.web.servlet.result.JsonPathResultMatchers$2.match(JsonPathResultMatchers .java:68) 在 org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:152)

有没有办法跳过给定的前缀并让 jsonpath 正常工作?也许使用全局配置?

编辑以澄清情况,在杰克逊 http 消息转换器中声明了前缀:

在此处编辑相关 jira 问题的链接

0 投票
1 回答
5111 浏览

java - MockMvc perform() 方法出错

我正在创建一个 Spring MVC 控制器测试。编译器显示以下粗体显示的方法的错误。我的代码中是否缺少某些库或某些内容?有什么建议么?

我正在使用以下依赖项:

0 投票
1 回答
6296 浏览

java - 单元测试 Spring RESTful 控制器时“未设置内容类型”

我有一个与此类似的 Rest 控制器:

当我使用 Postman 调用它并且不发送“密钥”参数时,我会收到以下 JSON 消息:

另一方面,我正在使用 JUnit 和 MockMVC Spring 实用程序测试此方法。

但是当我执行这个测试时,我注意到响应不是 JSON 消息。事实上,我得到了一个例外:

java.lang.AssertionError:未设置内容类型

特别是,完成的结果是

我推断当抛出异常时,它不会转换为 JSON 格式(我在发送电子邮件和关键参数时得到正确的 JSON 结果)

问题很明显:如果抛出异常,我应该在单元测试配置中更改什么以获得 JSON 错误消息?

0 投票
0 回答
671 浏览

hibernate - 集成测试单独工作,但不能在 Spring Boot 应用程序中一起运行

好像我在这里遗漏了一些重要的东西,但我自己没有设法找到它。

我有一个 Spring Boot 应用程序和 Hibernate,我正在尝试通过一些集成测试进行测试。我在测试时使用 HSQL 数据库。我尝试运行的测试使用 MockMvc 来检查我的控制器返回的 json 响应。

我让我的测试类扩展了一个配置类,它使用@Before 和@After 来初始化测试数据并在之后将其删除。

因此,在我的单一测试课程中,我有四个测试。只是做一些简单的、基本的事情,比如返回列表和单个对象。他们都只是在读取数据。

发生的情况是,当我分别运行这些测试时,一次一个,它们都运行良好。我得到了预期的输出。但是,当同时运行这四个测试时,其中之一没有返回相同的响应。事实上,它什么也没返回。更具体地说, testGetSingleData 测试在单独运行时返回一个对象。当与其他测试一起运行时,它什么也不返回。我的控制器说数据不在数据库中。在我看来,测试之间的数据库正在发生一些事情。当然,数据已初始化并删除,但这应该没问题。例如,一起运行返回对象列表的两个测试可以正常工作,但不能与返回单个对象的测试一起运行。因此,当 testGetSingleData 运行时,数据不知何故消失了。我想我需要一个潜在的原因来解释为什么会发生这种情况。单独运行的测试与其他测试一起运行时无法运行的错误来源可能是什么?

我的班级«test-config-class»注释为:

编辑:

0 投票
1 回答
1249 浏览

spring-mvc - 模拟 mvc 检查会话中是否不存在对象

我有以下测试

我想检查CardController.CREDIT_CARD请求后会话中不存在。

我的代码正确吗?

0 投票
2 回答
5205 浏览

spring - MockMvc 测试 Spring 抛出 org.springframework.web.HttpMediaTypeNotSupportedException

我收到以下异常 org.springframework.web.HttpMediaTypeNotSupportedException 试图测试 Json 控制器。

控制器中的方法是:

我的测试方法如下:

但是,我得到了这样的回应:

我的 Spring 版本是 4.0.0.RELEASE

0 投票
1 回答
3036 浏览

spring-mvc - 使用 MvcMock 将 HttpServletRequest 设置为测试方法参数

我正在为具有以下方法签名的控制器方法之一编写junit:

我需要使用 MockMvc 调用此方法,并且可以使用以下方法调用:

但问题是我无法在HttpServletRequest使用模拟 mvc 调用原始方法时设置参数。在没有设置HttpServletRequest参数的情况下,我的测试会出现问题,因为它是原始方法中需要和使用的东西。

请让我知道我应该如何设置。谢谢!

0 投票
1 回答
3902 浏览

spring - JsonPath OR condition using MockMVC

I am practicing MockMVC for rest call unit testing. how can we test the Boolean values so that whether the result is true or false I need to pass the test, I tried as follows,

Also I have list with 6 values, how can use list contains all kind of method,

Any suggestions please!!

0 投票
1 回答
2613 浏览

java - 通过 MockMvc 运行时传递给 ControllerAdvice 的身份验证令牌为空

我正在使用 Spring Boot 1.3、Spring 4.2 和 Spring Security 4.0。我正在使用 MockMvc 运行集成测试,例如:

在我的测试中,我正在模拟这样的用户登录:

这适用于我用 注释的方法,@PreAuthorize例如从测试中调用这样的方法时:

原则,我的 CurrentUser 对象,在PermissionsService#canDoThisThing.

我有一个用 @ControllerAdvice 注释的类,它将当前登录的用户添加到模型中,以便可以在每个视图中访问它:

但是,这在运行应用程序时工作正常(这是我的问题) - 在运行我的测试时,传递给上述 getCurrentUser 方法的身份验证参数始终为空。这意味着在我的视图模板中对 currentUser 属性的任何引用都会导致错误,因此这些测试会失败。

我知道我可以通过检索这样的原则来解决这个问题:

但我宁愿不更改我的主要代码,以便测试工作。

0 投票
2 回答
1511 浏览

java - 我需要为每个测试创建一个新的 MockMvc 吗?

我正在尝试将Cucumber添加到我的 Spring Web MVC 项目中,该项目已经在使用 spring-test 和 JUnit。我已经编写的非 Cucumber 集成测试自动插入了 WebApplicationContext,然后MockMvc为每个测试创建了一个。我尝试使用的Cucumber 示例MockMvc在步骤定义类的生命周期内注入一次。

MockMVC的API 文档没有提供任何关于调用如何perform修改MockMvc实例以及是否可以MockMvc为多个测试重用实例的指导。我也无法在参考文档中找到明确的答案。

合同是MockMvc什么?我应该为每个测试创建一个新测试吗?