2016-08-01 62 views
0

在服務測試用例中,我無法解析dao類和JdbcTemplate的依賴關係。無法在測試spring引導服務中模擬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。由於內部無法解決依賴關係。

回答

0

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

itemService = new ItemService(); 

創建一個真實的實例,並投擲模擬走。在setupMock(),itemService建成後,嘗試加入此等價的:

itemService.setItemDao(itemDAOImpl); 

所以你必須,它使用一個模擬DAO真正ItemService。

在testFindMax

然後()配置DAO返回PRO1,這樣的事情:

when(itemDAOImpl.getItem(...)).thenReturn(pro1); 
相關問題