我正在使用Mockito模拟服务层的方法。
尝试模拟以下代码行
{% for comment in page.object_list %}
<div class='comment-editormd-view'>
<textarea style="display:none;">
{{ comment.body }}
</textarea>
</div>
{% endfor %}
editormd.markdownToHTML("comment-editormd-view", {
htmlDecode : "style,script,iframe", // you can filter tags decode
emoji : true,
taskList : true,
lineNumbers : false,
为了模拟我正在使用
boolean status= accountDAO.updateAccount(Account acct);
但是问题是,当代码到达Mockito.when(accountDAO.updateAccount(Account acct)).thenThrow(new DataBaseException());
行时,不会引发任何异常,它只是以正常方式工作,而不会引发异常。理想情况下,应该抛出异常,因为我已经嘲笑它引发了数据库异常。
虽然还有另一种方法“查找帐户”,即
boolean status= accountDAO.updateAccount(Account acct);
对于此方法,使用mocikto成功抛出了异常,但对于update方法,则不起作用。
请帮助。
答案 0 :(得分:3)
假设您的代码如下所示:
Account acct = ...
Mockito.when(accountDAO.updateAccount(acct)).thenThrow(new DataBaseException());
如果仅使用Account acct
执行上述方法,则将引发异常,其他对象将不会引发任何异常。因此,如果您用其他对象执行此方法,则不会发生任何事情。
要对此进行检查,您可以定义一个规则,该方法的任何执行以及任何Account
实例都将引发异常:
Mockito.when(accountDAO.updateAccount(Mockito.any(Account.class))).thenThrow(new DataBaseException());
答案 1 :(得分:1)
首先,这一行
Mockito.when(accountDAO.updateAccount(Account acct)).thenThrow(new DataBaseException());
不应编译。您必须指定一些值作为updateAccount()
调用的参数,例如:
Mockito.when(accountDAO.updateAccount(Mockito.any(Account.class))).thenThrow(new DataBaseException());
这意味着“当使用任何updateAccount()
参数调用Account
时,然后抛出”。