【发布时间】:2021-12-22 13:33:09
【问题描述】:
我想匹配get-request的输出,并匹配手动提供的json字符串,基本上是从整个输出中复制一个json字符串并测试。尝试了很多方法但它没有发生,我无法从数据库中删除所有行以匹配一个字符串,所以,我只想匹配一个 json 字符串 - 如下所示
{
"instanceName": "",
"read": 1,
"swProduct": "Area 1",
"swProductModule": "Regular 1"
},
这是我的测试代码---
@SpringBootTest(classes = TestApplication.class)
@ActiveProfiles("dev")
@AutoConfigureMockMvc
public class SwStatusCheckTest {
@Autowired
private MockMvc mvc;
@IfProfileValue(name = "spring.profiles.active", values = { "dev" })
@Test
@DisplayName("GET Method /SwCheckStatus check success")
public void testStatusSuccess() throws Exception {
MvcResult result = mvc.perform(get("/status/SwCheckStatus"))
.andDo(print())
.andExpect(status().isOk())
.andReturn();
//.andExpect(content().json("{\"services\":[\"OutboundMessageService\"]}", true));
String actualJson = result.getResponse().getContentAsString();
String expectedJson = "[{\"instanceName\":\"Instance C\", \"read\" : 1, \"swProduct\" : \"Area 3\", \"swProductModule\" : \"Spring Boot 3\"}]";
assertThat(expectedJson).isIn(actualJson);
}
}
整个 Postman json 结果的输出如下所示 ---
[
{
"instanceName": "",
"read": 1,
"swProduct": "Area 1",
"swProductModule": "Regular 1"
},
{
"instanceName": "",
"read": 1,
"swProduct": "Area 1",
"swProductModule": "Regular 2"
},
{
"instanceName": "",
"read": 1,
"swProduct": "Area 1",
"swProductModule": "Spring Boot 1"
},
{
"instanceName": "",
"read": 1,
"swProduct": "Area 1",
"swProductModule": "Spring Boot 2"
},
Intellij 说 -- 它的期望和字符串匹配......但测试失败 -- 检查附件 --- [在此处输入图片说明][1]
非常感谢您对执行测试的任何见解帮助。 [1]:https://i.stack.imgur.com/FE2dT.jpg
【问题讨论】:
标签: java spring-boot junit mockmvc