簡體   English   中英

無法在測試Spring Boot服務中模擬JdbcTemplate

[英]Unable to mock JdbcTemplate in testing spring boot service

在服務的測試案例中,我無法解決dao類和JdbcTemplate的依賴關系。

public class TestPromotionUsingJunit {

    @InjectMocks
    private ItemService itemService;

    @Mock
    private ItemDAOImpl itemDAOImpl;
    @Mock
    private JdbcTemplate jdbcTemplate;

    @Before
    public void setupMock() {
        MockitoAnnotations.initMocks(this);

        itemService = new ItemService();

    }

    @Test
    public void testFindMax() {
        Product pro1 = new Product();
        pro1.setPluCode("4900692627408");
        pro1.setCategoryNo("2");
        pro1.setCategoryName("Women");
        pro1.setProductName("T-Shirt10163");
        pro1.setColor("CY");
        pro1.setSize("32");
        BigDecimal b1 = new BigDecimal(94.00);
        BigDecimal b2 = new BigDecimal(8);
        pro1.setPrice(b1);
        pro1.setTax(b2);
        Product pro2 = new Product();
        pro2.setPluCode("4900692627408");

        assertEquals(pro1.getPrice(), itemService.getItem(pro1));

    }

}

這里ItemService應該返回產品對象,但它返回null。 由於內部無法解決依賴性。

@InjectMocks創建itemService的模擬實例,但是

itemService = new ItemService();

創建一個真實實例並丟棄該模擬對象。 在setupMock()中,構造itemService后,嘗試添加與之等效的內容:

itemService.setItemDao(itemDAOImpl);

因此,您將擁有一個使用模擬DAO的真實ItemService。

然后在testFindMax()中將DAO配置為返回pro1,如下所示:

when(itemDAOImpl.getItem(...)).thenReturn(pro1);

暫無
暫無

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

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