2017-02-24 111 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。 –