2016-08-01 3 views
0

В тестовом примере для службы я не могу разрешить зависимость класса dao и JdbcTemplate.Не удалось издеваться над 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); 

Таким образом, вы будете иметь реальный ItemService, который использует макет DAO.

Затем в testFindMax() настроить DAO вернуть Pro1, что-то вроде этого:

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

 Смежные вопросы

  • Нет связанных вопросов^_^