Sono interessato alla creazione di oggetti di simulazione in una suite di test JUnit, tuttavia mi sono imbattuto in strutture di simulazione che utilizzano l'iniezione di dipendenza per iniettare oggetti fittizi. Tuttavia, mi piacerebbe essere in grado di simulare classi/funzioni senza dover iniettare quell'oggetto finto, lungo le linee di @patch() in python.Oggetto Java Mock, senza dipendenza injection
esempio banale:
//dependency injection
public String bar(Foo foo) {
return foo.foo(); //just pass in mock Foo object
}
//.... onto test code
Foo mockedFoo = <Mocked Foo object>;
String response = bar(mockedFoo);
assertEqual(response, <mockedFoo return value>);
//case I am looking for
public String bar() {
Foo foo = new Foo(); //how to create mock object here?
return foo.foo(); //or simply how to mock a single function?
}
//... onto test code
<force the Foo class or foo method to be mocked from here without touching bar() source code>
String response = bar();
assertEqual(response, <mocked response>);
http://stackoverflow.com/questions/10895605/how-to-mock-a-single-method-in-java – kamoor
Utilizzare una libreria, ad es Mockito. O in casi più semplici, estendi 'Foo' o meglio, implementa la stessa interfaccia di' Foo' per ottenere un semplice finto. – mike
Mike, guardando attraverso Mockito, sembra ancora che le dipendenze debbano essere iniettate. Si prega di vedere sopra per la modifica per aumentare la chiarezza. –