第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Spring JPA 規(guī)范 API 的 Mockito 不完全執(zhí)行動態(tài)查詢

Spring JPA 規(guī)范 API 的 Mockito 不完全執(zhí)行動態(tài)查詢

PIPIONE 2023-08-09 16:08:47
我有以下帶有動態(tài)查詢的服務類。public class CarService {    public Page<Cars> getAllCars(CarRequest request, ,, String carCarrier, String carNumber,Pageable pageRequest){       String userCarrier = request.getSubCarrier();       Specification <Car> carSpecification = null;       carSpecification = getCarDetails(request, carCarrier, carNumber);       return carRepository.findAll(carSpecification, pageRequest);   }    public Specification<Car> getCarDetails(CarRequest request, String carCarrier, String carNumber) {        System.out.println("I am in query");        return (Root<Car> root, CriteriaQuery<?> query, CriteriaBuilder cb) -> {            System.out.println("I am executing query");            List<Predicate> predicates = new ArrayList<>();            if(StringUtils.isNotBlank(request.getCarColor())) {                predicates.add(cb.and(cb.equal(root.get(“carColor”), request.getCarColor())));            }            if(StringUtils.isNotBlank(carCarrier)) {                predicates.add(cb.and(root.get("carCarrier”),carCarrier)));            }            if(StringUtils.isNotBlank(carNumber)) {                predicates.add(cb.and(cb.equal(root.get("carNumber"), carNumber)));            }            return cb.and(predicates.toArray(new Predicate[predicates.size()]));        };    }}下面是我的測試類,我正在嘗試測試動態(tài)查詢。public class CarServiceTest {@Mockprivate CarService carService;@Testpublic void test_cars() {    Pageable pageRequest = new PageRequest(0,20);    CarRequest request = new CarRequest();    request.setCarColor(“Red”);    request.setCarMake(“Nissan”);    when(carRepository.findAll(Mockito.any(Specification.class), Mockito.eq(pageRequest)))            .thenReturn(Mockito.mock(Page.class));    Assert.assertNotNull(carService.getAllCars(request, pageRequest));    }}上面的測試用例有效,但它只是輸入 getCarDetails 并打印第一行“我正在查詢”并返回。它不會進一步檢查查詢中的條件子句。我還嘗試直接從測試類調(diào)用該方法carService.getCarDetails(carRequest. "ABC", “A123”);結(jié)果還是一樣。我最近開始使用 Mockito,所以我不確定我是否在這里遺漏了導致此行為的某些內(nèi)容。我如何確保我的所有行都從代碼覆蓋率的角度執(zhí)行。
查看完整描述

1 回答

?
慕妹3242003

TA貢獻1824條經(jīng)驗 獲得超6個贊

Specification是函數(shù)式接口,您返回的函數(shù)將由 spring 在后臺調(diào)用(當您將其傳遞給合適的存儲庫方法之后)。在測試中,您模擬該存儲庫方法,因此沒有機會執(zhí)行該返回的函數(shù)。

如果Specification調(diào)用此函數(shù)toPredicate()

查看完整回答
反對 回復 2023-08-09
  • 1 回答
  • 0 關(guān)注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號