我这样做是为了尝试我的UserRestController,但我在响应中什么也没有得到,还有一个200状态码。
我尝试了很多方法,但都没有找到答案。。。
这是我用来测试分类控制器的代码
@RunWith(SpringRunner.class)
@WebMvcTest(CategoryRestController.class)
public class CategoryControllerTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private CategoryService service;
@Test
public void testGetAllCategories() throws Exception {
when(service.getCategories(null)).thenReturn(CompletableFuture.completedFuture(new PageImpl<>(Arrays.asList(new Category("Art"), new Category("Development")))));
mockMvc.perform(get("/api/v1/challenge/category/all")
.accept(MediaType.APPLICATION_JSON))
.andExpect(jsonPath("$", hasSize(4)))
.andDo(print());
}
}
当我运行单元测试时,会得到以下响应:
MockHttpServletRequest:
HTTP Method = GET
Request URI = /api/v1/challenge/category/all
Parameters = {}
Headers = [Accept:"application/json"]
Body = null
Session Attrs = {}
Handler:
Type = com.exalow.daify.controllers.v1.CategoryRestController
Method = com.exalow.daify.controllers.v1.CategoryRestController#getCategories(Pageable)
Async:
Async started = false
Async result = null
Resolved Exception:
Type = null
ModelAndView:
View name = null
View = null
Model = null
FlashMap:
Attributes = null
MockHttpServletResponse:
Status = 200
Error message = null
Headers = []
Content type = null
Body =
Forwarded URL = null
Redirected URL = null
Cookies = []
由于您没有显示控制器的代码,我假设控制器的方法CategoryRestController#getCategories(Pageable)
具有以下实现:
{
return ResponseEntity.ok(service.getCategories(null).get()).build();
}
请注意,我正在调用get()
方法,该方法在Controller的响应对象生成之前由service.get类别(null)
返回。这就是使CompletableFuture检索其任务结果的原因。作为一个例子,以一种简化的方式,如果您创建它来执行对远程服务的异步调用,那么一旦您调用get()
或加盟()
方法,y将被执行。
值得一提的是,参数作为参数从控制器传递到服务。getCategories(…)
方法必须与测试中指定的匹配,以便在测试中编写以下语句时返回对象存根:
当(service.get类别(null)). then返回(完整的uture.completed未来(新页面Impl
TLDR;如何使用Spring在正文中发送文本消息以及304状态代码? 背景 我正在使用Spring Boot编写一个REST API。在某些endpoint中,我想返回: 任一状态 ,身体, 或状态 未修改,正文 我的endpoint使用(在kotlin中)的方式如下: 问题 每当我用状态代码创建< code>ResponseEntity时!= 200,正文不发(空正文)。将< code>Htt
我使用Spring中的webClient从GraphQL WebService中获取数据。此代码位于一个泛型方法中,该方法将响应体解码为不同类型的对象。如果响应是预期的类型,则它运行良好。 现在我想处理来自WebService的错误。因此,我的问题与此非常相似:Spring Webflux:Webclient:Get body on error我发现建议使用onStatus,但我的问题是,即使re
我在Android平台上使用谷歌排球。我遇到了一个问题,其中错误空对于我正在使用的RESTful API,我需要确定Http状态代码,该代码通常以401(SC_UNAUTHORIZED)或500(SC_INTERNAL_SERVER_ERROR)的形式到达,我可以偶尔通过以下方式进行检查: 这将引发因为为空。 如何确定错误函数中的 Http 状态代码? 或者,如何确保< code>onErrorR
我正在使用 webClient 调用调用服务 1,该服务 1 调用服务 2,然后服务 2 从数据库中获取数据并返回它们。问题:我有 onStatus 来捕获错误的响应,因此响应具有 400 或 500 个状态代码。代码示例: 在一些边缘情况下,响应带有200个状态代码,响应体有失败消息和失败原因。那么我如何检索它,然后用该失败消息抛出异常(在其他服务返回的响应对象中)。因为它试图映射并抛出错误。目
问题内容: 我有一台服务器,从同一URL返回HTTP状态代码200、201和202。在Chrome浏览器中,我已经通过“网络”调试面板确认了状态代码是否符合我的预期(即200、201或202)。我依靠该状态码来确定下一步。 我希望jQuery(1.5.2版)AJAX的回调请求设置为服务器发送的状态代码。但是,即使服务器发送的代码是201或202,状态代码也始终为200。 换句话说,无论服务器发送什
我使用axios与自己的API(不是用NodeJS编写的)通信。 当我发布一个非简单的请求时,axios总是直接转到控制台中显示网络错误的catch块,即使有2个成功的Http请求。 错误:网络错误堆栈跟踪:createerror@http://localhost:3000/statist/js/bundle.js:1634:15 handleerror@http://localhost:3000