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