我正在使用Mockito模拟服务层的方法。
尝试模拟以下代码行
boolean status= accountDAO.updateAccount(Account acct);
Run Code Online (Sandbox Code Playgroud)
为了模拟这个我正在使用
Mockito.when(accountDAO.updateAccount(Account acct)).thenThrow(new DataBaseException());
Run Code Online (Sandbox Code Playgroud)
但是问题是当代码上线时boolean status= accountDAO.updateAccount(Account acct);,不会引发任何异常,它只是以正常方式工作,而不会引发异常。理想情况下,应该抛出异常,因为我已经嘲笑它引发了数据库异常。
虽然还有另一种方法“查找帐户”,即
Account acc=accountDAO.find(Account.class,accountId);
Run Code Online (Sandbox Code Playgroud)
对于此方法,使用mocikto成功抛出了异常,但对于update方法,则无法正常工作。
请帮忙。
假设您的代码如下所示:
Account acct = ...
Mockito.when(accountDAO.updateAccount(acct)).thenThrow(new DataBaseException());
Run Code Online (Sandbox Code Playgroud)
如果仅使用来执行上述方法Account acct,则将引发异常,其他对象将不会抛出任何异常。因此,如果您使用不同的对象执行此方法,则不会发生任何事情。
要对此进行检查,您可以定义一条规则,该方法的任何执行以及任何实例都Account将引发异常:
Mockito.when(accountDAO.updateAccount(Mockito.any(Account.class))).thenThrow(new DataBaseException());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2682 次 |
| 最近记录: |