我正在编写junit,并且使用@mock和@injectMock。但是,我发现@injectMocks在spring aop.code中的bean时不起作用,如下所示:
QuestionService.java:
@Component
public class QuestionService implements IQuestionService{
@Resource
private IUserService userService;
@Override
public User findUserById(long id) {
// TODO Auto-generated method stub
User user = userService.findUserById(id);
return user;
}
}
测试.java:
@Mock
IUserService mockuserService;
@InjectMocks
@Resource
QuestionService questionService;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
}
@Test
public void testfind() {
when(mockuserService.findUserById(1)).thenReturn(
new User(1, "name"));
User user = questionService.findUserById(1);
Assert.assertEquals(new User(1, "name"), user);
}
它有效!
但是,当我在spring aop中添加userService时,它不起作用!
例如事务aop。
如何修复它?
最佳答案
我发现了一个有趣的行为 - 一旦我在类中的任何方法周围使用 AOP,模拟就会停止工作;相反,尽管没有相关代码,但“真实”组件已启动。 我发现如果你使用 @MockBean - 一切正常。
关于java - @injectMocks 在使用 spring aop 时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33205665/