java - java.lang.AssertionError:响应内容
问题描述
我正在尝试测试 aUnitTest
但java.lang.AssertionError: Response content
在运行测试时得到。
我的日志猫
java.lang.AssertionError: Response content
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\"}]"
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)
UnitTestCase 类
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class UnitTestAuth {
@Autowired
public MockMvc mvc;
@Test
public void getHello() throws Exception {
mvc.perform(MockMvcRequestBuilders.get("/auth").accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk())
.andExpect(content().string(equalTo(new UserController().getUsers())));
}
}
控制器类
@RestController
@RequestMapping("/auth")
public class UserController {
private static final Logger LOGGER = Logger.getLogger(UserController.class.getName());
@Value("${mail.domain ?: google.com}")
private static String mailDomain;
private List<UserDTO> users = Arrays.asList(new UserDTO("Ahmad", "shahzad", "1", "ahmad.shahzad@" + mailDomain),
new UserDTO("Jamshaid", "iqbal", "2", "jamshaid.ali@" + mailDomain),
new UserDTO("Waqas", "Akram", "3", "waqas.akram@" + mailDomain));
@RequestMapping(method = RequestMethod.GET, headers = "Accept=application/json")
public List<UserDTO> getUsers() {
return users;
}
@RequestMapping(value = "{userName}", method = RequestMethod.GET, headers = "Accept=application/json")
public UserDTO getUserByUserName(@PathVariable("userName") String userName) {
UserDTO userDtoToReturn = null;
for (UserDTO currentUser : users) {
if (currentUser.getUserName().equalsIgnoreCase(userName)) {
userDtoToReturn = currentUser;
if (LOGGER.isLoggable(Level.INFO)) {
LOGGER.info(String.format("Found matching user: %s", userDtoToReturn.toString()));
}
break;
}
}
return userDtoToReturn;
}
}
问题:我无法获得如何匹配这两个字符串才能通过测试。谢谢你的帮助。
解决方案
您正在尝试将内容字符串与实际对象进行比较,因为它的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 对象的字段进行比较。
推荐阅读
- c# - 如何将 SignalR 集线器上下文传递给 ASP .NET Core 2.1 上的 Hangfire 作业?
- electron - 无法在 Electron 中成功制作透明窗口(javascript)
- c# - 选择器在滚动 xamarin 表单中的项目时自动聚焦在 CarouselViewControl 中
- xamarin.forms - 如何在 xamarin 表单中将背景图像添加到网格布局?
- oracle - 如何在 oracle apex 应用程序中以单一形式从两个区域插入数据库中的项目
- perl - if 语句如何在 Perl 中使用 hash 参数工作?
- python - 如何在 python 中创建自己的 JSON 解析器库
- php - 如何使用 PHP、jQuery/Ajax 在一对一聊天中获取对方用户的“打字...”信息
- java - CCID RDR_to_PC_DataBlock 错误问题 0xFE ICC_MUTE - Java 智能卡读取
- apache - 阿帕奇骆驼和码头