InjectMocks对象的org.mockito.exceptions.misusing.NotAMockException
我试图模拟一个方法的返回值,但我得到NotAMockException
。
@InjectMocks private MyService myService; @Mock private OtherServiceUsedInMyServiceAsAutowired otherServiceUsedInMyServiceAsAutowired;
在MyService
我有一个名为myMethod()
的方法,我希望在调用此方法时返回虚拟对象。
doReturn(someDummyObject).when(myService).myMethod(any(), any(), any());
那时我得到了错误。 我究竟做错了什么? 完整错误:
org.mockito.exceptions.misusing.NotAMockException: Argument passed to when() is not a mock! Example of correct stubbing: doThrow(new RuntimeException()).when(mock).someMethod();
注释@InjectMocks
用于将@InjectMocks
注入到测试对象中:
@InjectMocks
– 自动将@InjectMocks
注入测试对象。
这并不意味着对象本身就是一个模拟。 如果要测试对象并希望该对象自动预先初始化模拟实例(通过setter注入),则此注释很有用。
如果要创建MyService
的模拟,请使用@Mock
:
@Mock private MyService myService;
这将创建MyService
的模拟,您需要为该模拟指定所需的行为。 第一件事是OtherServiceUsedInMyServiceAsAutowired
不再有意义: OtherServiceUsedInMyServiceAsAutowired
对象不依赖于该类。