【发布时间】:2015-12-19 08:45:02
【问题描述】:
我尝试用junit 测试覆盖我的Repository 代码,但出乎意料的是我遇到了以下问题:
@Test
@Transactional
public void shoudDeactivateAll(){
/*get all Entities from DB*/
List<SomeEntity> someEntities = someEntityRepository.findAll();
/*for each Entity set 1 for field active*/
someEntities.forEach(entity ->
{entity.setActive(1);
/*save changes*/
SomeEntityRepository.save(entity);});
/*call service, which walks through the whole rows and updates "Active" field to 0.*/
unActiveService.makeAllUnactive();
/*get all Entities again
List<SomeEntity> someEntities = SomeEntityRepository.findAll();
/*check that all Entities now have active =0*/
someEntities.forEach(entity -> {AssertEquals(0, entity.getActive());});
}
在哪里:
makeAllUnactive() 方法只是一个@Query:
@Modifying
@Query(value = "update SomeEntity e set v.active=0 where v.active =1")
public void makeAllUnactive();
并且:someEntityRepository 扩展 JpaRepository
这个测试方法返回AssertionError:Expected 0 but was 1.
这意味着makeAllUnactive 没有更改实体的状态或进行了更改,但它们是不可见的。
您能帮我了解一下我的代码中的“差距”在哪里吗?
【问题讨论】:
标签: java junit transactions spring-data dao