rmo*_*stl 5 java junit unit-testing mockito
以下是使用异常对void方法进行存根的主要Mockito文档.但是,Mockito doc中的示例存根无参数方法.如果方法具有参数并且如果a参数不符合合同,则该方法抛出异常,该怎么办?
所以对于下面的课程......
public class UserAccountManager {
/**
* @throws Exception if user with provided username already exists
*/
public void createAccount(User user) throws Exception {
// db access code ...
}
}
Run Code Online (Sandbox Code Playgroud)
...如何使用Mockito模拟UserAccountManager.createAccount,以便在某个User对象作为参数传递给方法时抛出异常?
rmo*_*stl 10
所述的Mockito文档已经示出了如何存根的示例性参数的例外空隙方法.
但是,对于使用参数和异常对void方法进行存根,请执行以下操作:
由于createAccount的返回类型为void,因此必须使用doThrow:
User existingUser = ... // Construct a user which is supposed to exist
UserAccountManager accountMng = mock(UserAccountManager.class);
doThrow(new Exception()).when(accountMng).createAccount(eq(existingUser));
Run Code Online (Sandbox Code Playgroud)
注意eq Matcher 的用法.如果参数的类型(在本例中为User)不能单独实现equals,您也可以尝试使用refEq Matcher.
| 归档时间: |
|
| 查看次数: |
14086 次 |
| 最近记录: |