JMockit:更改模拟方法的参数
JMockit: alter parameter of a mocked method
JMockit 可以修改它模拟的方法的参数吗?修改它模拟的方法的 return 值当然很容易,但是修改参数本身呢?我知道至少可以使用验证来捕获和测试模拟参数,但这是在事后发生的。
这是我的简化代码:
class Employee{
Integer id;
String department;
String status;
//getters and setters follow
}
我要测试的方法:
public int createNewEmployee() {
Employee employee = new Employee();
employee.setDepartment("...");
employee.setStatus("...");
//I want to mock employeeDao, but the real DAO assigns an ID to employee on save
employeeDao.saveToDatabase(employee);
return employee.getId(); //throws NullPointerException if mocked, because id is null
}
在 employeeDao.saveToDatabase(...)
上记录期望时,使用分配给 result
字段的 Delegate
对象。委托方法(任意名称)应该声明一个 Employee emp
参数;然后用你想要的任何 id 值简单地调用 emp.setId(...)
。
有关示例,请参阅 documentation。
JMockit 可以修改它模拟的方法的参数吗?修改它模拟的方法的 return 值当然很容易,但是修改参数本身呢?我知道至少可以使用验证来捕获和测试模拟参数,但这是在事后发生的。
这是我的简化代码:
class Employee{
Integer id;
String department;
String status;
//getters and setters follow
}
我要测试的方法:
public int createNewEmployee() {
Employee employee = new Employee();
employee.setDepartment("...");
employee.setStatus("...");
//I want to mock employeeDao, but the real DAO assigns an ID to employee on save
employeeDao.saveToDatabase(employee);
return employee.getId(); //throws NullPointerException if mocked, because id is null
}
在 employeeDao.saveToDatabase(...)
上记录期望时,使用分配给 result
字段的 Delegate
对象。委托方法(任意名称)应该声明一个 Employee emp
参数;然后用你想要的任何 id 值简单地调用 emp.setId(...)
。
有关示例,请参阅 documentation。