Я хотел бы создать набор тестов для своего сервиса. У меня проблема с сервисом тестирования, который удаляет ресурс. мой тест:
@Test
@Transactional
public void deleteAsset() {
AssetPutModel am = new AssetPutModel();
am.setAssetName("test3");
am.setIpAddresses("1.1.1.1");
//previously created object
Long projectId = projectRepository.findAll().get(0).getId();
//first save it
ResponseEntity<Status> response = assetService.saveAsset(projectRepository.findAll().get(0).getId(), am, "test");
Optional<Asset> a = assetRepository.findByNameAndProject("test3", projectRepository.findById(projectId).get());
//checkif asset is created
Assertions.assertThat(a.isPresent()).isTrue();
//delete it
assetService.deleteAsset(asset.getId(),"test");
a = assetRepository.findByNameAndProject("test3", projectRepository.findAll().get(0));
Assertions.assertThat(a.isPresent()).isFalse();
}
метод service.delete:
@Transactional
public ResponseEntity<Status> deleteAsset(Long interfaceId, String name) {
Optional<Interface> interf = interfaceRepository.findById(interfaceId);
if (interf.isPresent())
interfaceRepository.delete(interf.get());
return new ResponseEntity<>(null,HttpStatus.OK);
}
и моя сущность:
@Entity
@Table(name = "interface")
public class Interface {
private Long id;
private Set<Service> services;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@OneToMany(mappedBy = "anInterface", cascade = CascadeType.REMOVE,orphanRemoval=true,fetch=FetchType.LAZY)
public Set<Service> getServices() {
return services;
}
public void setServices(Set<Service> services) {
this.services = services;
}
@PreRemove
private void removeChilds() {
this.services.remove(this);
}
}
В результате этот тестовый бросок NullPointerException
в интерфейсеюридическое лицо this.services.remove(this);
. в то время как обычно работает метод работает хорошо. Есть ли способ заставить тестовую работу работать без изменений в сущности?