2016-07-01 5 views
0

Kann JMockit die Parameter von Methoden ändern, die es verspottet? Es ist sicherlich einfach, den Rückgabewert der Methode, die er verspottet, zu ändern, aber wie wäre es mit der Änderung der Parameter selbst? Ich weiß, dass es möglich ist, die verspotteten Parameter mithilfe von Verifizierungen zumindest zu erfassen und zu testen, aber das passiert nach der Tat.JMockit: Alter Parameter einer verspotteten Methode

Hier ist meine vereinfachte Code:

class Employee{ 
    Integer id; 
    String department; 
    String status; 

    //getters and setters follow 
} 

Die Methode, die ich testen wollen:

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 
    } 

Antwort

2

Verwenden Sie ein Delegate Objekt dem result Feld zugeordnet, wenn auf employeeDao.saveToDatabase(...) eine Erwartung der Aufnahme. Die Delegate-Methode (mit einem beliebigen Namen) sollte einen Employee emp-Parameter deklarieren; Rufen Sie dann einfach emp.setId(...) mit dem von Ihnen gewünschten ID-Wert an.

Beispiele finden Sie in der documentation.

+0

Das ist eine leistungsstarke Funktion. – user64141

Verwandte Themen