java - Mockito 不使用 thenThrow 抛出异常
问题描述
我正在使用 Mockito 来模拟服务层的方法。
试图模拟以下代码行
boolean status= accountDAO.updateAccount(Account acct);
为了模拟这个我正在使用
Mockito.when(accountDAO.updateAccount(Account acct)).thenThrow(new DataBaseException());
但问题是,当代码进入该行时boolean status= accountDAO.updateAccount(Account acct);
,没有抛出异常,它只是以正常方式工作,没有抛出异常。理想情况下应该抛出一个异常,因为我已经模拟它抛出数据库异常。
虽然还有另一种方法“查找帐户”,即
Account acc=accountDAO.find(Account.class,accountId);
对于此方法,使用 mocikto 成功引发了异常,但对于 update 方法,它不起作用。
请帮忙。
解决方案
假设您的代码如下所示:
Account acct = ...
Mockito.when(accountDAO.updateAccount(acct)).thenThrow(new DataBaseException());
如果您仅使用 执行上述方法,这将抛出异常Account acct
,其他对象不会抛出任何东西。所以如果你用不同的对象执行这个方法,什么都不会发生。
要检查这一点,您可以定义一个规则,该方法的任何执行以及任何实例都Account
将引发异常:
Mockito.when(accountDAO.updateAccount(Mockito.any(Account.class))).thenThrow(new DataBaseException());
推荐阅读
- javascript - 为 iframe 设置自定义 HTTP 请求标头
- haskell - 如何用 '.' 分割字符串 在 Haskell 中,但如果句点介于两个数字之间,例如:(2.5) 那么不要拆分?
- python - 用引用在python中拆分句子
- java - 如何编写表示带有子对象的 json 对象的 java 类?
- node.js - 如何在我的 MongoDB 数组中推送一个 {key: value} 对象?
- python - Numpy dot 操作完成很快但持续占用大量 CPU 时间
- kotlin - 关于 Kotlin 中密封类的密封子类
- java - Apache Storm 和 Docker Swarm,我在哪里可以看到我的标准输出的输出?
- php - 如果在while循环PHP中先前的值为false,则禁用单选按钮
- json - 如何在 Spark 中从 Json Object{}(复杂数据类型)DataFrame 中选择键