簡體   English   中英

spring JpaRepository方法的存根

[英]Stub of the spring JpaRepository method

我有下一個JPQL查詢:

@Query(value = "select t.ts as ts, t.ko.eolink.guid as guid from ObjPar t "
        + "where t.tuser.cd = ?1 and t.lst.cd=?2 and t.ts between ?3 and ?4")
List<MeterData> findTimestampByUser(String userCd, String lstCd, Date dtFrom, Date dtTo);

其中MeterData-只是投影接口:

public interface MeterData {
    Date getTs();
    String getGuid();
}

現在,我需要編寫類似存根的內容。 我不需要執行查詢,但需要將其返回到MeterData列表。

我該怎么做? 我應該創建並實現Class的MeterData嗎? 也許有人可以暗示我更簡單的方法?

我的解決方案:

List<MeterData> findTimestampByUser(String userCd, String lstCd, Date dtFrom, Date dtTo) {

        class LocalMeterData implements MeterData {
            public Date getTs() {
                return new Date();
            }
            public String getGuid() {
                return "2312-1316-4564-4654-4463";
            }
        }

        List<MeterData> lst = new ArrayList<>(5);
        MeterData elem = new LocalMeterData();
        lst.add(elem);
        lst.add(elem);
        lst.add(elem);
        lst.add(elem);

return lst;

}

如果您需要對存儲庫進行存根以進行單元測試,請使用Mockito。 像已經在測試中一樣,將您的類實現聲明為私有內部類,並指導Mockito使用它:

MeterData elem = new LocalMeterData();
Mockito.when(yourRepository.findTimestampByUser(anyString(), any(Date.class), any(Date.class)))
        .thenReturn(Arrays.asList(elem, elem, elem, elem));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM