我正在为在Spring启动时编写的RestFul API编写JUnit。
API有一个名为“软删除”的功能,它有一个名为“active”的数据库列,如果用户删除该对象,则active设置为0,表示该对象已被删除。
这是我用于软删除的Junit测试代码。令我惊讶的是,Junit结果显示,即使在删除对象后,active仍为1。
这是删除代码。如您所见,它只是更新“活动”并将其设置为false。
@RepositoryRestResource(collectionResourceRel = "manufacturers", path = "manufacturers")
public interface ManufacturerRepository extends CrudRepository<Manufacturer, String> {
@Modifying
@Query("update Manufacturer m set m.active=false where m.id=: {#m.getManufacturerId()}")
void delete(@Param("m") Manufacturer m);
}
由于我可以在我的数据库表中看到active设置为0,我确信我的测试代码是错误的。对于为什么会发生这种情况的任何想法?
#感谢您的建议。我已更新代码以从数据库中获取新副本。现在,active是false,我的代码现在通过了测试。
答案 0 :(得分:3)
在数据库中“删除”后,您似乎没有得到制造商。
除非您在repository.delete(制造商)中更新您的制造商,否则您必须调用getter才能从数据库中获取对象的更新版本。