我有下一个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;
}
答案 0 :(得分:0)
如果您需要对存储库进行存根以进行单元测试,只需使用Mockito。像已经在测试中一样,将您的类实现声明为私有内部类,并指导Mockito使用它:
MeterData elem = new LocalMeterData();
Mockito.when(yourRepository.findTimestampByUser(anyString(), any(Date.class), any(Date.class)))
.thenReturn(Arrays.asList(elem, elem, elem, elem));