我有这个restcontroller,它返回分页项:
@GetMapping("/api/items")
public Page<Item> getPagedItems(Pageable pageable, @RequestParam(defaultValue="") String searchBy,
@RequestParam(defaultValue="") String searchValue) {
Page<Item> pageItem;
switch (searchBy) {
case "name" :
pageItem = itemRepository.findByNameStartingWith(searchValue, pageable);
break;
case "description" :
pageItem = itemRepository.findByDescriptionStartingWith(searchValue, pageable);
break;
default:
pageItem = itemRepository.findAll(pageable);
break;
}
return pageItem;
}
到目前为止,我的MvcTest看起来是这样的:
@Test
public void testGetItems() throws Exception{
Page<Item> itemPage = itemRepository.findAll(PageRequest.of(0, 20));
given(itemRepository.findAll(PageRequest.of(0, 20))).willReturn(itemPage)
this.mvc.perform(get("/api/items")
.contentType(MediaType.APPLICATION_JSON))
.andDo(print())
.andExpect(status().isOk())
.andExpect(jsonPath("$",hasSize(1)));
}
我想要这个/api/items请求的内容。它正在返回
java.lang.AssertionError:在org.springframework.test.util.jsonPathExpectationShelper.evaluatejsonPath(jsonPathExpectationShelper.java:290)在org.springframework.test.web.servlet.result.jsonPathResultMatchers.lambda$value$0(jsonPathResultMatchers.java:87)在org.springframework.test.web.servlet.mockmvc$1。在在org.junit.internal.runners.statements.invokeMethod.evalue(invokeMethod.Java:17)在org.springframework.test.context.junit4.statements.runbeforestexecutioncallbacks.evalue(Runbeforestexecutioncallbacks.73)在org.springframework.test.context.junit4.statements.runaftertestexecutioncallbacks.evalue(Runbeforestexecutioncallbacks.83)在.runchild(SpringJunit4ClassRunner.Java:97)在org.junit.runners.ParentRunner$3。run(ParentRunner.Java:290)在org.junit.runners.ParentRunner.Java:290)在org.junit.runners.ParentRunner.runchilds(ParentRunner.Java:71)在org.junit.runners.ParentRunner.Access在org.junit.runners.ParentRunner.Access在org.junit.runners.ParentRunner.Accessl.junit.runner.RemoteStrunner.Runtests(RemoteStrunner.java:538)位于org.eclipse.jdt.internal.junit.runner.runtests(RemoteStrunner.760)位于org.eclipse.jdt.internal.junit.runner.RemoteStrunner.run(RemoteStrunner.java:460)位于org.eclipse.jdt.internal.junit.runner.RemoteStrunner.main(RemoteStrunner.java:206
我该怎么做才能让这个测试成功呢?问题似乎是什么?
如果有帮助的话,我会使用spring安全系统。我已经用@WithMockUser(roles=“admin”)注释了测试类。
当您返回page
作为响应时,响应JSON如下所示:
{
content: [
{
id: 1,
name: "abc"
},
{
id: 2,
name: "xyz"
}
],
pageable: {
sort: {
sorted: false,
unsorted: true
},
offset: 0,
pageSize: 10,
pageNumber: 0,
paged: true,
unpaged: false
},
last: true,
totalPages: 1,
totalElements: 2,
size: 10,
number: 0,
first: true,
numberOfElements: 2,
sort: {
sorted: false,
unsorted: true
}
}
因此,断言路径应该是$.content,就像.andexpect(jsonPath(“$.content”,hasSize(1)));
我试图测试我的RestController代码(Spring Boot项目),但我总是得到404。以下是我目前掌握的情况: } } 结果总是这样: 我做错了什么?我已经尝试过直接在setUp方法中用标准设置()初始化mockmvc,我还使用了@SpringBootTest和@AutoConfigreMockMvc相结合。 有人有什么有用的提示吗?我使用spring boot 2.1.4。 谢谢
我在Spring Boot服务中有一个rest控制器,如下所示: 我可以让服务生成八位元组流和application/Json,但我的困惑在于出现错误时字节数组的返回类型,在这种情况下,我希望生成Json而不是字节数组 请给我出主意如何解决这个问题
我有base64字符串,我想使用Spring的RESTController在img标记上打印base64图像。 图像不输出。有什么问题?
我有一个Spring MVC控制器,方法如下: 它位于一个开始如下所示的控制器内部: 我使用的是Spring WebMVC 4.1.3和Jackson 2.4.3。我尝试在RequestMapping中添加一个“produces”属性,表示它应该返回JSON。在本例中,发回的Content-Type属性是“application/json”,但仍然没有引用测试字符串。 我可以通过调用JSON库将J
我正在构建我的第一个Spring Boot应用程序。但是我不能正确地得到我的requestMapping控制器的回答。 这是我的主要课程: 这是我的RestController: 如果我看一下日志,我可以看到“/hi”映射: 但是当我访问:http:localhost:8080/hi时,我看到了一个空白页面,我期望看到“Hello World”文本。 为什么我得到一个空白页面? ---编辑----
我正在试用新的Spring 4.0@RestController,以从控制器返回一个简单的文本响应: 当我访问/心跳时,我返回: 结果包括双引号,这是我没有想到的。 当我访问/heartbeat/test时,我会得到一个空响应,但我希望我还活着!文本 使现代化 卷曲-ihttp://myserver.com/rest/heartbeat HTTP/1.1 200 OK内容类型:applicatio