gpt4 book ai didi

JAVA - 获取空 MockHttpServletResponse : body. 。但是它是 200

转载 作者:行者123 更新时间:2023-12-01 16:24:37 24 4
gpt4 key购买 nike

I have written unit test cases for a spring rest controller but I'm getting blank response body.

下面是我的 Controller 类

@RestController
@RequestMapping("/v2")

public class controller {

@Autowired

Service service;

@RequestMapping(value="/health",method=RequestMethod.POST)

public String postRequest(@RequestHeader @NotNull@NotBlank String
transID) {

return service.getTest(transID); }
}

下面是我的服务等级

 @Component
public class Service {

public String getTest(@NotNull String transid) {

return "Hello World Test";
} }

下面是我的单元测试类。我已经使用mockito为此方法编写了单元测试用例

 class UnitTest {
@InjectMocks

controller controllerUse;
@Mock

Service service;
@Autowired

MockMvc mockMvc;

@BeforeEach

public void test() {

MockitoAnnotations.initMocks(this);

mockMvc=MockMvcBuilders.standaloneSetup(controllerUse).build();

}

@Test

public void confirmTest() throws Exception {

mockMvc.perform(post("/v2/health")

.header("transID","ABC"))

.andExpect(status().isOk())

.andDo(print())

.andReturn(); }

}

输出:

MockHttpServletResponse:

Status = 200

Error message = null

Headers = []

Content type = null

Body =

Forwarded URL = null

Redirected URL = null

Cookies = []

我收到的响应代码为 200。但正文为空白。我缺少什么?这是为 Spring 休息 Controller 编写单元测试用例的标准方法吗?

最佳答案

由于您要注入(inject)模拟 bean 服务,因此您需要使用预期响应来模拟方法。

这里是使用 Junit 5 和 Spring Boot Test 工件的示例代码,但您也可以使用标准 spring 测试模块实现相同的目标。

@WebMvcTest(SampleController.class)
class SampleControllerTest {

@MockBean
Service service;
@Autowired
private MockMvc mockMvc;

@Test
public void confirmTest() throws Exception {

when(service.getTest("ABC")).thenReturn("Hello World");

mockMvc.perform(post("/v2/health")

.header("transID", "ABC"))

.andExpect(status().isOk())
.andDo(print())
.andReturn();
}
}

关于JAVA - 获取空 MockHttpServletResponse : body. 。但是它是 200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62174152/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com