在同一对象上多次调用 Mockito.时?
当尝试将 Mockito 与 Spring 一起使用时,通过 Bean 声明创建 Mock 对象...
<bean id="accountMapper" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="org.example.persistence.mybatis.mappers.AccountMapper" />
</bean>
...我在多次调用 Mockito.时发现了一些奇怪的行为,而没有重置 Mock 对象,例如:
Mockito.when(this.accountMapper.createBadGrammarException()).thenThrow(new BadSqlGrammarException("Bla", null, new SQLException()));
一旦此代码(“Mockito.when”)在测试期间多次调用(在同一模拟上),测试就会失败并显示错误(BadSqlGrammerException,即使此异常是实际预期的 - 如果我不抛出异常,我确实会失败,并且手动抛出它工作正常)。这是预期的行为吗?Mockito似乎建议每次都创建一个新的模拟,这意味着为每个方法创建DAO...?
当我两次调用 Mockito.when 方法时,究竟会发生什么?模拟应该如何反应?替换行为?忽略它?不幸的是,大多数搜索只产生如何为对方法本身的多次调用返回不同结果的结果,而不是对Mockito的多次调用的预期结果。
我只是试图理解Mockito和这里的最佳实践,因为仅仅因为它似乎有效而使用某些东西似乎是一个坏主意......