如何验证在UserRepository对象中使用UserService对象(使用@Repository(" userRepository")注释)之后的UserService对象,该对象确实是保存,没有问题。
几乎所有教程都倾向于忽略这种情况,并使服务类中的save(用户用户)方法无效。
答案 0 :(得分:2)
您可以使用H2内存数据库为此创建集成测试。
代码将是这样的:
@RunWith(SpringRunner.class)
@SpringBootTest
class UserInsertTest {
@AutoWired
private UserService userService;
@AutoWired
private UserRepository userRepository;
@Test
public void insert() {
UserEntity user = userService.save(new UserEntity());
assertNotNull(userRepository.findOne(user.getId());
}
}
答案 1 :(得分:1)
我是如何创建一个只包含布尔值的包装类。
parseSaveUserResponse(userDao.save(user))
private SaveUserResponse parseSaveUserResponse(final User user) {
return new SaveUserResponse(user != null);
}
这里我创建了一个包装类,如果保存成功,它的字段将为true。如果我们公开api,这是一个很好的做法。
答案 2 :(得分:0)
这个怎么样?
@Service
public class RepositoryWrapper {
public <T, ID> boolean save(JpaRepository<T, ID> jpaRepository, T t, Function<T, ID> getIdFunc) {
jpaRepository.save(t);
return jpaRepository.existsById(getIdFunc.apply(t));
}
public <T, ID> boolean delete(JpaRepository<T, ID> jpaRepository, ID id) {
jpaRepository.deleteById(id);
return !jpaRepository.existsById(id);
}
}
并使用。
@RestController
public class MyController {
@Autowired
private UserRepository userRepository;
@Autowired
private RepositoryWrapper repositoryWrapper;
@PostMapping("/my")
public ResponseEntity<?> save(User user) {
// Check parameter...
if(repsitoryWrapper.save(userRepository, user, _user -> _user.getId())) {
// Success
}
else {
// Fail
}
}
}