我在测试类中自动装配了一个字段
@Autowired
private AbcDAO abcDAO;
并像这样使用它
doThrow(new RuntimeException()).when(abcDAO).methodName(xyz);
或者
doNothing().when(abcDAO).methodName(xyz);
我在这样的spring文件中嘲笑了这个DAO类
<bean id="abcDAO" class="org.mockito.Mockito" factory-method="mock" >
<constructor-arg value="a.b.c.abcDAO" />
</bean>
我明白了NotAMockException Argument passed to when() is not a mock.
当我像这样使用 `@Mock 注释时
@Mock
private AbcDAO abcDAO;
直接在测试类中(而不是 @Autowiring 它并在 spring 中模拟),它工作正常。
为什么会这样?
编辑:
好的,那么让我告诉你这样做的原因。
我们有一个服务 X,我想为“X”的 API 编写 junit。Junits 的编写方式是我创建一个客户端并调用这些 API。我没有直接调用可以使用 @Mock 和 @Inject 模拟的方法。
我不确定是否清楚,但这是需要在 spring 文件中模拟时的用例。