亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

java.lang.AssertionError: 響應內容

java.lang.AssertionError: 響應內容

萬千封印 2023-05-10 14:06:13
我正在嘗試測試 aUnitTest但java.lang.AssertionError: Response content在運行測試時得到了。我的日志java.lang.AssertionError: Response contentExpected: <[UserDTO [firstName=Ahmad, lastName=shahzad, userName=1, emailAddress=ahmad.shahzad@null], UserDTO [firstName=Jamshaid, lastName=iqbal, userName=2, emailAddress=jamshaid.ali@null], UserDTO [firstName=Waqas, lastName=Akram, userName=3, emailAddress=waqas.akram@null]]> but: was "[{\"firstName\":\"Ahmad\",\"lastName\":\"shahzad\",\"userName\":\"1\",\"emailAddress\":\"ahmad.shahzad@null\"},{\"firstName\":\"Jamshaid\",\"lastName\":\"iqbal\",\"userName\":\"2\",\"emailAddress\":\"jamshaid.ali@null\"},{\"firstName\":\"Waqas\",\"lastName\":\"Akram\",\"userName\":\"3\",\"emailAddress\":\"waqas.akram@null\"}]"Expected :<[UserDTO [firstName=Ahmad, lastName=shahzad, userName=1, emailAddress=ahmad.shahzad@null], UserDTO [firstName=Jamshaid, lastName=iqbal, userName=2, emailAddress=jamshaid.ali@null], UserDTO [firstName=Waqas, lastName=Akram, userName=3, emailAddress=waqas.akram@null]]>Actual   :"[{\"firstName\":\"Ahmad\",\"lastName\":\"shahzad\",\"userName\":\"1\",\"emailAddress\":\"ahmad.shahzad@null\"},{\"firstName\":\"Jamshaid\",\"lastName\":\"iqbal\",\"userName\":\"2\",\"emailAddress\":\"jamshaid.ali@null\"},{\"firstName\":\"Waqas\",\"lastName\":\"Akram\",\"userName\":\"3\",\"emailAddress\":\"waqas.akram@null\"}]"at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)at org.springframework.test.web.servlet.result.ContentResultMatchers.lambda$string$3(ContentResultMatchers.java:130)at org.springframework.test.web.servlet.MockMvc$1.andExpect(MockMvc.java:195)單元測試用例類@RunWith(SpringRunner.class)@SpringBootTest@AutoConfigureMockMvcpublic class UnitTestAuth {@Autowiredpublic MockMvc mvc;@Testpublic void getHello() throws Exception {    mvc.perform(MockMvcRequestBuilders.get("/auth").accept(MediaType.APPLICATION_JSON))            .andExpect(status().isOk())            .andExpect(content().string(equalTo(new UserController().getUsers())));}}
查看完整描述

2 回答

?
不負相思意

TA貢獻1777條經驗 獲得超10個贊

您需要在您的情況下使用json()而不是string()因為您的響應在內部轉換為 JSON。并使用ObjectMapperfromcom.fasterxml.jackson.databind.ObjectMapper將您的響應列表轉換為 JSON。


@Test

public void getHello() throws Exception {

ObjectMapper mapper = new ObjectMapper();

String result = mapper.writeValueAsString(new UserController().getUsers());

    mvc.perform(MockMvcRequestBuilders.get("/auth").accept(MediaType.APPLICATION_JSON))

            .andExpect(status().isOk())

            .andExpect(content().json(result));

}

編輯:您可以使用 ObjectMapper 將對象列表轉換為 JSON。


查看完整回答
反對 回復 2023-05-10
?
叮當貓咪

TA貢獻1776條經驗 獲得超12個贊

您正在嘗試將內容字符串與實際對象進行比較,就像toString()調用其方法時的情況一樣,如下所示:


Expected: <[UserDTO [firstName=Ahmad, lastName=shahzad, userName=1, emailAddress=ahmad.shahzad@null], UserDTO [firstName=Jamshaid, lastName=iqbal, userName=2, emailAddress=jamshaid.ali@null], UserDTO [firstName=Waqas, lastName=Akram, userName=3, emailAddress=waqas.akram@null]]>

 but: was "[{\"firstName\":\"Ahmad\",\"lastName\":\"shahzad\",\"userName\":\"1\",\"emailAddress\":\"ahmad.shahzad@null\"},{\"firstName\":\"Jamshaid\",\"lastName\":\"iqbal\",\"userName\":\"2\",\"emailAddress\":\"jamshaid.ali@null\"},{\"firstName\":\"Waqas\",\"lastName\":\"Akram\",\"userName\":\"3\",\"emailAddress\":\"waqas.akram@null\"}]"

您必須解析內容中的每個屬性或使用某種 JSON 解析器來批量解析。然后將每個解析的屬性與 User 對象的字段進行比較。


查看完整回答
反對 回復 2023-05-10
  • 2 回答
  • 0 關注
  • 294 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號