0

我可能會提供我的問題的完整GitHub示例,但目前我只是問 - 也許有人面臨類似的問題。如何正確預填充數據庫與Spock和Spring Boot的集成測試

問題是 - 用Spock和Spring Boot我想在'setup'方法中運行集成測試並預先填充H2數據庫的本地實例。我創建了幾個可以互爲父對象的對象。所以我創建了例如。 Human1和Human2,從序列中獲取它們生成的ID,然後使用Human1 id爲'parentId'屬性準備REST JSON調用,並將該POST發送到API以創建以Human1作爲父項的Human3。

我的API分析檢索的DTO,提取'parentId'值,並使用方法'findOne(id)'使用存儲庫執行搜索。問題是,在這個階段,存儲庫聲稱數據庫中沒有內容(在適當的表格中)。

我試着用@Transactional搞亂(它既是我的Spock規範,也是關於mapper類的方法),在安裝程序中保存和刷新,分別沖洗這兩個存儲庫和其他數千個東西,但似乎沒有任何工作。所以請 - 如果任何人至少可以闡明這個問題,我會非常感激。

+0

您可以在下面添加您的答案並自己接受。這樣,問題將被標記爲「已回答」,並將幫助其他用戶。 – kazanaki

回答

0

所以我終於偶然發現@BeforeTransaction註釋,就像一個魅力。我將數據庫插入/刪除邏輯放入單獨的方法中,註釋的方式爲@BeforeTransaction,並且在單獨事務中的每個單獨的事務之前調用它,該事務在與測試方法相關的其他事件開始之前關閉。這解決了問題。