[英]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.