在服务测试用例中,我无法解析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。由于内部无法解决依赖性。
答案 0 :(得分:0)
@InjectMocks创建itemService的模拟实例,但随后
itemService = new ItemService();
创建一个真实的实例并抛出模拟。在setupMock()中,在构造itemService之后,尝试添加等效的:
itemService.setItemDao(itemDAOImpl);
所以你将拥有一个使用模拟DAO的真实ItemService。
然后在testFindMax()中配置DAO以返回pro1,如下所示:
when(itemDAOImpl.getItem(...)).thenReturn(pro1);