2017-02-24 110 views
0

我正在为用Spring编写的RestFul API编写JUnit。关于软删除的JUnit测试

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

这是我的软删除的Junit测试代码。令我惊讶的是,Junit结果显示,即使删除对象后,活动始终为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); 

} 

由于我可以在我的数据库表中看到活动设置为0,我相信我的测试代码是错误的。任何想法为什么发生这种情况?

感谢您的意见。我更新了代码以从数据库中获取全新副本。现在活动是错误的,我的代码现在通过测试。

enter image description here

+1

单元测试可能不应该与db进行交互 - 这不是一个单元测试,它是一个集成测试 – nhouser9

+0

你的仓库的delete方法是什么?你能给一些代码吗? –

回答

3

它看起来像你不要在DB“删除”之后获得的制造商。

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

+0

谢谢,我正在测试旧物体。在使用getter获取更新版本后,我的测试代码显示active现在是false。 –