【发布时间】:2012-10-12 13:56:08
【问题描述】:
我在测试类中自动装配了一个字段
@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 文件中模拟时的用例。
【问题讨论】:
标签: java spring junit mocking mockito