【发布时间】:2021-09-17 11:10:52
【问题描述】:
这是一个测试类:
@SpringBootTest
@AutoConfigureMockMvc
@Transactional
public class ValidationTest {
@Autowired
private EntityManager entityManager
...
}
我想测试服务:
@Transactional(propagation = Propagation.REQUIRES_NEW)
public boolean isEmailUnique(String emailAddress) {
Optional<User> user = userRepository.findByEmail(emailAddress);
...
}
为此,我创建并保存了一个实体:
entityManager.persist(new User(name: "abc", email: "abc@email.com"))
entityManager.flush()
最后调用请求:
mockMvc.perform(post("..."))
userRepository.findByEmail() 看不到插入的实体,我错过了什么?
ps:如果我从方法中删除@Transactional,那么测试工作正常。
【问题讨论】:
标签: java spring-boot spring-transactions spring-boot-test