软件删除的JUnit测试

时间:2017-02-24 16:16:15

标签: java spring junit

我正在为在Spring启动时编写的RestFul API编写JUnit。

API有一个名为“软删除”的功能,它有一个名为“active”的数据库列,如果用户删除该对象,则active设置为0,表示该对象已被删除。

这是我用于软删除的Junit测试代码。令我惊讶的是,Junit结果显示,即使在删除对象后,active仍为1。

enter image description here

这是删除代码。如您所见,它只是更新“活动”并将其设置为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,我的代码现在通过了测试。

enter image description here

1 个答案:

答案 0 :(得分:3)

在数据库中“删除”后,您似乎没有得到制造商。

除非您在repository.delete(制造商)中更新您的制造商,否则您必须调用getter才能从数据库中获取对象的更新版本。