我正在使用Mockito来模拟服务层的方法。
试图嘲笑以下代码行
boolean status= accountDAO.updateAccount(Account acct);
为了嘲笑我正在使用的这个
Mockito.when(accountDAO.updateAccount(Account acct)).thenThrow(new DataBaseException());
但问题是当代码到达行布尔状态=accountDAO时。更新账户(Account acct)
,不会引发异常,它只按正常方式工作,不会引发异常。理想情况下应该抛出一个异常,因为我已经模拟它来抛出数据库异常。
而另一种方法是“查找帐户”,即
Account acc=accountDAO.find(Account.class,accountId);
对于此方法,使用mocikto成功引发异常,但对于update方法,它不起作用。
请帮忙。
首先,这条线
Mockito.when(accountDAO.updateAccount(Account acct)).thenThrow(new DataBaseException());
不应编译。您必须指定一些值作为调用的参数,例如:
Mockito.when(accountDAO.updateAccount(Mockito.any(Account.class))).thenThrow(new DataBaseException());
这意味着“当使用任何帐户
参数调用updateUser()
时,然后抛出”。
假设您的代码如下所示:
Account acct = ...
Mockito.when(accountDAO.updateAccount(acct)).thenThrow(new DataBaseException());
如果您仅使用Account acct
执行上述方法,这将引发异常,其他对象不会抛出任何东西。因此,如果您使用不同的对象执行此方法,则不会发生任何事情。
要检查这一点,您可以定义一个规则,即此方法的任何执行,以及帐户
的任何实例都将引发异常:
Mockito.when(accountDAO.updateAccount(Mockito.any(Account.class))).thenThrow(new DataBaseException());
我在测试跟随功能。 下面是测试代码。 我定义了以下变量。 问题是不会引发异常。所以测试一直失败。 请告诉我我缺少的东西。
当方法运行时,我希望抛出一个异常(在测试时)。我能做的事情很少: 存根(mock.someMethod(“某些参数”)).ToThrow(new RuntimeException()); 当(mock.someMethod(“某些参数”)).thenThrow(new RuntimeException()) 放弃..... 通常我会创建一个spy对象来调用spied方法。使用stubbing我可以
是否可以在使用非预定义参数调用模拟时引发异常?有答案。返回\u SMART\u null,但这并不是我真正需要的,因为如果null是合法的返回值,它就不起作用,这不会导致NullPointerException,而是以后出错。 编辑:一些背景。因此,在Mockito中,当您定义一个mock时,您可以如下所示为每个调用指定返回值: 当<代码>myMock时。someMethod是用参数调用的,我在测
我正在使用Mockit。我遇到过这样的情况:一个方法抛出一个异常,捕捉该异常并记录该异常(并且不重新抛出)。 现在,对于某些场景,xyz()可以引发异常,该异常在abc()中捕获。我要测试的就是这个场景。我无法使用,因为正在捕获并记录异常。然而,我的测试用例应该看看是否引发了这个异常。 我确实在网上搜索过,但是没有找到任何相关的东西。 任何关于如何接近的指针都会很有帮助。 我提到这个问题,看起来很
我正在尝试使用@Valid验证我的JPA实体,如下所示: 它工作了一段时间,但现在它停止工作,我不知道为什么。我试着在< code>persist方法中手动执行,它按预期工作: 可能会发生什么情况,或者我该如何调试?
我有一个返回类型为的方法。它还可以抛出许多异常,所以我想测试一下那些被抛出的异常。所有尝试都失败了,原因相同: 类型Stubber中的(T)不适用于参数(void)时的方法 有什么想法,我可以如何获得方法抛出一个指定的异常?