簡體   English   中英

如何調用采用 ServerHttpResponse 類型參數的方法?

[英]How can I call a method which takes a parameter of type ServerHttpResponse?

我正在使用 @WebFluxTest 為服務 class 編寫一個 Junit 測試用例。

由於我需要測試服務 Class 的方法,我需要調用該方法並檢查它是否返回正確的 Http 狀態,即 200/“OK”,我需要有關相同的幫助。

Service Class 我要測試的方法:

public Mono<Product> addProduct(Product productData, ServerHttpResponse response) {
        productData.getFcData().replaceAll((fcCode,fcData)-> {
                fcData.setBatchWiseData(fcData.getBatchWiseData().parallelStream()
                    .map(d->{
                        if(d.getLastUpdated() ==null)
                            d.setLastUpdated(LocalDateTime.now());
                        return d;
                    } ).collect(Collectors.toList()));
                    return fcData;
            }
        );
        
        Mono<Boolean> success = redisTemplate.opsForHash()
                .put(PRODUCT_PREFIX+productData.getProductCode(), 
                        productData.getProductCode(), productData);
            success.subscribe();
            response.setStatusCode(HttpStatus.CREATED);
        return success.flatMap(x->getProduct(productData.getProductCode()));
    }

我的測試用例:

    @Test
    void testAddProduct(){
        Product prodObj = new Product();
        prodObj.setProductCode("789123");

        FcWiseData fcWiseDataObj = new FcWiseData();
        fcWiseDataObj.setFcCode("50001");
        BatchWiseData batchWiseDataObj = new BatchWiseData();
        batchWiseDataObj.setBatchNo("Uni001");
        batchWiseDataObj.setExpiryDate(LocalDate.of(2020, 1, 8));
        batchWiseDataObj.setMrp(100.0);
        batchWiseDataObj.setStockQty(1L);
        batchWiseDataObj.setLastUpdated(LocalDateTime.of(2021, Month.JULY, 29, 19, 30, 40));
        fcWiseDataObj.setBatchWiseData(List.of(batchWiseDataObj));
        Map<String, FcWiseData> fcDataObj = Map.of("52001", fcWiseDataObj);
        prodObj.setFcData(fcDataObj);

        Mockito.when(redisTemplate.opsForHash()).thenReturn(hashOperations);
        Mockito.doReturn(Mono.just(true)).when(hashOperations)
        .put("Product" + prodObj.getProductCode(), prodObj.getProductCode(), prodObj);
        
    //  ServerHttpResponse response = Mockito.mock(ServerHttpResponse.class);
    //  assertNotNull(prodService.addProduct(prodObj, response));
         
    // what should I write here to test the above method?   
    }

您可以將 class MockHttpServletResponse用於測試中的方法參數。

這樣的事情應該有效。

HttpServletResponse httpServletResponse = new MockHttpServletResponse();

有關詳細信息,請參閱此處的 javadoc

暫無
暫無

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

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