0
我有以下测试:加入表中没有被填充在@Transactional测试
@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);
}
与@Transactional注解类
。执行后我需要回滚,所以其他测试不会失败。但是,看起来,连接表没有在方法结束之前填充(断言正在下降)。我如何手动确保它得到更新?
这里是映射UserEntity.java
@ManyToMany(mappedBy = "moderators")
@JsonBackReference(value = "moderatedShops")
@Setter
@Getter
private List<ShopEntity> moderatedShops;
在这里,在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;
拜托,同时显示你的实体类,另一件事是我不知道这种测试是否有必要。你基本上是测试你是否可以在db中插入一些东西 - 你不测试任何逻辑。不知道你是否也使用了spring-boot,但是如果你仍然想用db来测试存储数据,可以看一下https://spring.io/blog/2016/04/15/testing-improvements-in-spring- boot-1-4#testing-the-jpa-slice – pezetem
@pezetem我添加了实体。我知道它在实际应用中并没有多大意义,但是我只是学习使用多对多的关系,在与之相关的jpa存储库中添加了一些方法,并且我想确保工作正常。 – KrwawyKefir