gpt4 book ai didi

java - InjectMocks 对象上的 org.mockito.exceptions.misusing.NotAMockException

转载 作者:行者123 更新时间:2023-11-28 21:10:05 26 4
gpt4 key购买 nike

我正在尝试模拟方法的返回值,但我得到了 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用于将模拟注入(inject)测试对象:

@InjectMocks - injects mocks into tested object automatically.

这并不意味着对象本身就是一个模拟对象。如果您想测试一个对象并希望该对象自动具有预先初始化的模拟实例(通过 setter 注入(inject)),此注释很有用。

如果你想创建一个MyService的mock,使用@Mock:

@Mock
private MyService myService;

这将创建一个 MyService 的模拟,您需要为该模拟指定您想要的行为。第一件事是 OtherServiceUsedInMyServiceAsAutowired 不再有意义:模拟对象将不再依赖于该类。

关于java - InjectMocks 对象上的 org.mockito.exceptions.misusing.NotAMockException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34613978/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com