bevölkert wird habe ich Test folgende:nicht in @Transactional Test Join-Tabelle
@Test
public void createNewShopAndCheckUserShopsCollection()
{
//given
ShopEntity shop = new ShopEntity();
String shopName = "test shop";
MallEntity mall = new MallEntity();
mall.setId(1L);
UserEntity user = userService.findOne(1L);
int shopsModeratedBefore = user.getModeratedShops().size();
shop.setMall(mall);
shop.setName(shopName);
shop.setModerators(Collections.singletonList(user));
ShopEntity savedShop = shopRepository.save(shop);
user = userService.findOne(1L);
assertThat(user.getModeratedShops()).hasSize(shopsModeratedBefore + 1);
}
in der Klasse mit @Transactional kommentiert. Ich muss nach der Ausführung zurückrollen, damit andere Tests nicht fehlschlagen. Es scheint jedoch, dass die Join-Tabelle vor dem Ende der Methode nicht gefüllt wird (die Assertion fällt). Wie kann ich manuell sicherstellen, dass es aktualisiert wird?
ist hier Mapping in UserEntity.java
@ManyToMany(mappedBy = "moderators")
@JsonBackReference(value = "moderatedShops")
@Setter
@Getter
private List<ShopEntity> moderatedShops;
Und hier in ShopEntity.java
@ManyToMany
@JoinTable(name = "shop_moderators",
joinColumns = @JoinColumn(name = "shop_id"),
inverseJoinColumns = @JoinColumn(name = "user_id"))
@JsonManagedReference(value = "moderatedShops")
@Setter
@Getter
private List<UserEntity> moderators;
bitte, zeigen Sie auch Ihre Entitäten Klassen, eine andere Sache ist, dass ich nicht weiß, ob diese Art von Test notwendig ist. Sie testen grundsätzlich, ob Sie etwas in db einfügen können - Sie testen keine Logik. Nicht sicher, ob Sie auch Spring-Boot verwenden, aber wenn Sie noch Daten in DB speichern möchten, werfen Sie einen Blick auf https://spring.io/blog/2016/04/15/testing-improvements-in-spring- boot-1-4 # testing-the-jpa-slice – pezetem
@pezetem ich habe Entitäten hinzugefügt. Ich weiß, dass es in der realen Anwendung nicht viel Sinn macht, aber ich habe gerade über die Verwendung von vielen zu vielen Beziehungen gelernt, einige Methoden im jpa-Repository dazu hinzugefügt und ich wollte sicherstellen, dass das funktioniert. – KrwawyKefir