我通过H2创建了一些API-mem db,春季启动。
然后我由testCase
创建了mockMvc
,这是测试重复ID创建错误。
我要在创建相同用户(预期重复的用户ID)时进行测试。 但这总是200行。。
我的错误是什么?或一些错误?还是需要H2 DB配置?
如果我运行应用程序并使用PostMan进行测试,它将返回409,并且具有相同的用户ID测试
测试用例类:
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class UserControllerTests {
测试用例:
@Test
public void createUser_alreadyExistsUser_409() throws Exception{
User user = new User().setId("testId").setPassword("testPassword");
mockMvc.perform(post("/users")
.content(objectMapper.writeValueAsString(user))
.contentType(MediaType.APPLICATION_JSON))
.andDo(print());
mockMvc.perform(post("/users")
.content(objectMapper.writeValueAsString(user))
.contentType(MediaType.APPLICATION_JSON))
.andDo(print());
mockMvc.perform(post("/users")
.content(objectMapper.writeValueAsString(user))
.contentType(MediaType.APPLICATION_JSON))
.andDo(print());
mockMvc.perform(post("/users")
.content(objectMapper.writeValueAsString(user))
.contentType(MediaType.APPLICATION_JSON))
.andDo(print());
mockMvc.perform(post("/users")
.content(objectMapper.writeValueAsString(user))
.contentType(MediaType.APPLICATION_JSON))
.andDo(print());
final ResultActions resultActions = this.mockMvc.perform(post("/users")
.content(objectMapper.writeValueAsString(user))
.contentType(MediaType.APPLICATION_JSON))
.andDo(print());
resultActions
.andExpect(status().isConflict())
.andExpect(jsonPath("$.message").value(ErrorCodes.Constants.USER_ID_ALREADY_EXISTS_ERROR));
}
和用户服务:
@Service
public class UserServiceImpl implements UserService {
private final UserRepository userRepository;
public UserServiceImpl(UserRepository userRepository){
this.userRepository = userRepository;
}
@Override
public User createUser(User user) {
UserEntity userEntity = new UserEntity().setId(user.getId()).setPassword(this.encryptPassword(user.getPassword()));
userRepository.findById(user.getId()).ifPresent( k -> {
throw ConflictException.getUserAlreadyExistsException(user.getId());
});
userRepository.save(userEntity);
return null;
}
private String encryptPassword(String password){
MessageDigest md = null;
try {
md = MessageDigest.getInstance("SHA-256");
}catch(NoSuchAlgorithmException e){
e.printStackTrace();
}
md.update(password.getBytes());
return new String(md.digest());
}
}
答案 0 :(得分:-1)
我在测试之前使用了以下代码:
@MockBean
UserRepository userRepository
删除此代码后,它可以工作。