2016-08-01 14 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(); 

は、実際のインスタンスを作成し、モックを破棄します。 itemServiceが構築された後setupMock()で、この同等のものを追加してみてください:

itemService.setItemDao(itemDAOImpl); 

ですから、モックDAOを使用して、実際のItemServiceを持っています。 testFindMaxで次に

()、PRO1を戻すには、このような何かDAOを設定:

when(itemDAOImpl.getItem(...)).thenReturn(pro1); 
関連する問題