Mockito不使用thenThrow引发异常

R R*_*Ram 2 java mockito

我正在使用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方法,则无法正常工作。

请帮忙。

Ber*_*eri 6

假设您的代码如下所示:

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)