在我的模式中,我声明了这些属性:
"index_name": {
"type": "string",
"examples": ["foo-wwen-live", "foo"]
},
"locale": {
"type": "string",
"examples": ["wwen", "usen", "frfr"]
},
"environment": {
"type": "string",
"default": "live",
"examples": [
"staging",
"edgengram",
"test"
]
}
Run Code Online (Sandbox Code Playgroud)
我希望根据我的模式验证的 JSON 主体仅在以下情况下才有效:
index_name 是存在,并且两者 locale和environment 不存在;locale和/或enviroment 是存在,并且index_name 不存在总之,locale而environment绝不应该以混合index_name。
这些应该通过:
案例#1
{
"locale": "usen"
}
Run Code Online (Sandbox Code Playgroud)
案例#2
{
"environment": "foo"
}
Run Code Online (Sandbox Code Playgroud)
案例#3
{
"environment": "foo",
"locale": "usen"
}
Run Code Online (Sandbox Code Playgroud)
案例#4 …
我正在尝试使用 MockMvc 测试我的 Spring Boot REST 控制器。以下是我的测试课:
UserControllerImplTest(版本 1)
@SpringBootTest
@AutoConfigureMockMvc
class UserControllerImplTest {
@Autowired
private MockMvc mockMvc;
@MockBean
private UserDTOService userDTOService;
@MockBean
private ImageDTOService imageDTOService;
@Test
public void whenUsers_shouldReturnUsers() throws Exception {
UserDTO user1 = getSampleUser("user1");
UserDTO user2 = getSampleUser("user2");
UserDTO user3 = getSampleUser("user3");
List<UserDTO> users = List.of(user1, user2, user3);
Mockito.when(userDTOService.getAll()).thenReturn(users);
mockMvc.perform(get("/user"))
.andExpect(status().isOk())
.andExpect(content().string(users.toString()));
}
private UserDTO getSampleUser(String username) {
return UserDTO.builder()
.username(username)
.email(username + "@example.com")
.password("password")
.registerTime(LocalDateTime.now())
.isActive(true)
.build();
}
}
Run Code Online (Sandbox Code Playgroud)
待测试控制器: UserController:
@Api(tags={"User info"})
@RequestMapping("/user")
public interface …Run Code Online (Sandbox Code Playgroud)