2017-06-09 116 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); 
    }