我正在使用 spring 框架并使用 Junit 和 mockito 進行測驗。
現在我的服務中有一個方法,它使用我在測驗中創建的一些物件,讓我們稱它們為 configObject1 和 configObject2,我將它們作為引數發送到方法,然后該方法開始對另一個存盤庫進行一些呼叫那些配置物件,那些存盤庫被模擬并且運行良好,該方法從這些查詢/配置物件中生成“CalculusResult”串列。之后,我使用擴展 CRUDRepository 的存盤庫并進行 saveAll()。然后它應該回傳一個包含物體的可迭代物件,但由于某種原因,在 saveAll 方法之后它回傳一個空串列。
測驗:
@Test
...
configObject1 conf1 = new configObject1 (...);
configObject2 conf2 = new configObject2 (...);
Calculusresult calcRes = new CalculusResult(null,...,new java.sql.Date(system.currentTimeMilis()),...);
List<CalculusResult> resList= new ArrayList<CalculusResult>();
resList.add(calcRes);
Calculusresult calcRes2 = new CalculusResult(1,...,new java.sql.Date(system.currentTimeMilis()),...);
List<CalculusResult> resList2= new ArrayList<CalculusResult>();
resList2.add(calcRes2);
when(calculusResultRepository.saveAll(resList)).thenReturn(resList2);
...
assertTrue(!response.isEmpty())
來自服務的方法:
...//The method is building the list of calculusResults
resCalc.setDate(new java.sql.Date(system.currentTimeMilis()))
resList.add(calcres);//CalculusResult object is added to the list, this object is well made
List<CalculusResult> savedResults = (List<CalculusResult>) calculusResultRepository.saveAll(resList); //This returns an empty list (If I don't cast, it also returns nothing)
for(CalculusResult calcres : savedResults){
... //This makes nothing because savedResults is empty, making the response empty and failing the test.
存盤庫:
@Repository
public interface CalculusResultRepository extends CrudRepository<CalculusResult, Long> {
}
我不確定,但我認為問題可能是我在測驗中創建的物件與服務中的物件不同,因為其中一個屬性是創建時的 sql 日期,所以它可能沒有觸發測驗中的“when(calculusRepository.saveAll(reslist)...”是因為在測驗中創建的物件和在服務中創建的物件在該屬性中具有不同的日期。
如果是這種情況,有沒有辦法修復它?或者問題是完全不同的事情?
uj5u.com熱心網友回復:
您可以使用 Mockito ArgumentMatchers 來匹配任何引數。
when(calculusResultRepository.saveAll(Mockito.any(List.class))).thenReturn(resList2);
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/378269.html
標籤:爪哇 弹簧靴 莫基托 spring-repositories crud-repository
上一篇:正則運算式在簽名后不會停止
