我为我的应用程序创建了工作集成测试:
@Test
public void postCalendar() throws Exception {
User actualUser = createUser();
actualUser = userRepository.save(actualUser);
String externalId = randomUUID().toString();
Account account = new Account(actualUser, Provider.CUSTOM_PROVIDER, actualUser.getEmail(), externalId);
accountRepository.save(account);
Calendar expectedCalendar = createCalendarWithAccount(account);
mvc.perform(MockMvcRequestBuilders.post("/calendar").contentType(V1_0)
.content(toJSON(createCalendarDto(expectedCalendar))))
.andExpect(status().isOk())
.andExpect(content().contentTypeCompatibleWith(V1_0))
.andExpect(jsonPath("$.id", is(notNullValue())))
.andExpect(jsonPath("$.name", is(expectedCalendar.getName())))
.andExpect(jsonPath("$.title", is(expectedCalendar.getTitle())))
.andExpect(jsonPath("$.description", is(expectedCalendar.getDescription())))
.andExpect(jsonPath("$.color", is(expectedCalendar.getColor())))
.andExpect(jsonPath("$.email", is(expectedCalendar.getEmail())))
.andExpect(jsonPath("$.primary", is(expectedCalendar.isPrimary())));
}
现在看起来工作正常。在我的第一个版本中没有传递,因为ID
字段不存在,但我想使用这种测试方式(下一个测试示例不起作用,它需要忽略id
个字段):< / p>
@Test
public void postCalendar() throws Exception {
User actualUser = createUser();
actualUser = userRepository.save(actualUser);
String externalId = randomUUID().toString();
Account account = new Account(actualUser, Provider.CUSTOM_PROVIDER, actualUser.getEmail(), externalId);
accountRepository.save(account);
Calendar expectedCalendar = createCalendarWithAccount(account);
mvc.perform(MockMvcRequestBuilders.post("/calendar").contentType(V1_0)
.content(toJSON(createCalendarDto(expectedCalendar))))
.andExpect(status().isOk())
.andExpect(content().contentTypeCompatibleWith(V1_0))
.andExpect(content().json(toJSON(expectedCalendar)));
}
如果我的dto
发生了变化 - 我不应该关心改变测试标准,因为所有的json都会被比较。
是否可以通过指令来修复此超级测试以忽略某些字段(例如id
)?我如何在此处声明忽略内部对象中的某些字段(id
以获取嵌套集合中可以在创建日历内容中的对象?)