我想执行Spring Data Jpa存储库的集成测试。
例如,我有一个@Column(updatable = false)
的实体,如果我愿意,我想确保它不会更新。
我的工作是:
MyEntity ent = repo.findById(id);
assert ent.getNotUpdatableField == true;
ent.setNotUpdatableField(false);
repo.saveAndFlush(ent);
MyEntity updatedEnt = repo.findById(id);
assert ent.getNotUpdatableField == true;
最后一个断言失败是因为第二次存储库返回字面上第一次返回的同一个对象并被分配给ent
变量。
但该字段实际上并未在数据库中更新,也没有例外。
要测试我要测试的内容,我找到了自动装配EntityManager
的解决方案,并在.clear()
之后调用refresh(ent)
或saveAndFlush(ent)
。
我想知道是否可以强制存储库从所有测试中的表中加载数据?在每种情况下手动使用@Autowired
EntityManager
都很繁琐。
可能我做错了,有更好的方法来测试Spring Data JPA实体。