Ho esaminato domande simili su questo forum, ma nessuno di loro ha risposto alla mia domanda. Sembra strano, ma è possibile prendere in giro una chiamata al costruttore sull'oggetto che stai deridendo.EasyMock: simulare una chiamata al costruttore in java
Esempio:
class RealGuy {
....
public void someMethod(Customer customer) {
Customer customer = new Customer(145);
}
}
class MyUnitTest() {
public Customer customerMock = createMock(Customer.class)
public void test1() {
//i can inject the mock object, but it's still calling the constuctor
realGuyobj.someMethod(customerMock);
//the constructor call for constructor makes database connections, and such.
}
}
Come si può aspettare una chiamata al costruttore? Posso cambiare la chiamata del costruttore del cliente per usare newInstance, ma non sono sicuro che ciò possa essere d'aiuto. Non ho alcun controllo su ciò che fa il corpo del costruttore new Customer(145)
.
È possibile?
Sarebbe una buona idea non creare connessioni di database in un costruttore. Inietti le connessioni nella classe che le usa. –
concordato. Ma non ho il controllo sulla logica del costruttore del cliente. – Setzer