org.mockito.exceptions.misusing.NotAMockException 在 InjectMocks 对象上
org.mockito.exceptions.misusing.NotAMockException on InjectMocks object
我试图从方法中模拟 return 值,但我得到 NotAMockException
。
@InjectMocks
private MyService myService;
@Mock
private OtherServiceUsedInMyServiceAsAutowired otherServiceUsedInMyServiceAsAutowired;
在 MyService
中,我有一个名为 myMethod()
的方法,我想在调用此方法时 return 虚拟对象。
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
- injects mocks into tested object automatically.
这并不意味着对象将是一个 mock 本身。如果您想测试一个对象并希望该对象自动具有 pre-initialized 个模拟实例(通过 setter 注入),此注释很有用。
如果要创建 MyService
的模拟,请使用 @Mock
:
@Mock
private MyService myService;
这将创建一个 MyService
的模拟,您需要为该模拟指定您想要的行为。第一件事是 OtherServiceUsedInMyServiceAsAutowired
不再有意义:模拟对象将不依赖于 class.
我试图从方法中模拟 return 值,但我得到 NotAMockException
。
@InjectMocks
private MyService myService;
@Mock
private OtherServiceUsedInMyServiceAsAutowired otherServiceUsedInMyServiceAsAutowired;
在 MyService
中,我有一个名为 myMethod()
的方法,我想在调用此方法时 return 虚拟对象。
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
- injects mocks into tested object automatically.
这并不意味着对象将是一个 mock 本身。如果您想测试一个对象并希望该对象自动具有 pre-initialized 个模拟实例(通过 setter 注入),此注释很有用。
如果要创建 MyService
的模拟,请使用 @Mock
:
@Mock
private MyService myService;
这将创建一个 MyService
的模拟,您需要为该模拟指定您想要的行为。第一件事是 OtherServiceUsedInMyServiceAsAutowired
不再有意义:模拟对象将不依赖于 class.