我正在测试我的存储库以进行更新操作
@Test
public void updateStatusByEmailWithEmailCustomer()
{
customerQuickRegisterRepository.save(standardEmailCustomer());
assertEquals(CUST_STATUS_EMAIL,customerQuickRegisterRepository.findByEmail(CUST_EMAIL).getStatus());
customerQuickRegisterRepository.updateStatusByEmail(CUST_EMAIL,STATUS_EMAIL_VERFIED );
assertEquals(STATUS_EMAIL_VERFIED,customerQuickRegisterRepository.findByEmail(CUST_EMAIL).getStatus());
}
在测试用例中,我将我的实体保存为默认状态,之后我使用updateStatusByEmail(CUST_EMAIL,STATUS_EMAIL_VERFIED)将其更改为其他实例,但仍然是下一个assert语句失败,这是因为测试执行期间的更新在完成测试后提交....有什么方法可以在测试中提交我的更改?
答案 0 :(得分:1)
您可以使用刷新底层Hibernate Session
,因为这会将您的更改推送到数据库中的基础表(在当前的测试管理事务中)。 / p>
在Spring参考手册的testing chapter中搜索“误报”以获取详细信息。
基本上,您需要在更新调用之后和相应的断言之前,在当前 Hibernate flush()
上调用Session
。
如果这不能解决您的问题,使用Spring Framework 4.1,您可以在测试中使用新的TestTransaction
API programmatic transaction management。
此致
Sam(spring-test
模块的负责人)