2017-06-09 132 views
0

我有一個3類方法的服務類,Service類也使用了一些@Autowired註解。 3種方法中,我想模擬兩種方法,但使用真正的方法爲第三種方法。一起使用@Spy和@Autowired

問題是:

  1. 如果我使用@Autowired與@Spy,所有三個實際的方法實現被調用。
  2. 如果我僅使用@Spy,則調用實型方法時返回空指針,因爲沒有初始化Autowired對象。

回答

0

我知道這些兩個選項:

  1. 使用@SpyBean從彈簧引導測試註釋作爲唯一的註解
@Autowired 
@InjectMocks 
private ProductController productController; 

@BeanSpy 
private ProductService productServiceSpy; 
  • 使用Java反射來「自動裝載」間諜對象,例如ReflectionTestUtils
  • @Autowired 
    private ProductController productController; 
    
    @Autowired 
    private ProductService productService; 
    
    @Before 
    public void setUp() { 
        ProductService productServiceSpy = Mockito.spy(productService); 
         ReflectionTestUtils.setField(productController, "productService", productServiceSpy); 
    }