O ile wiem, nie można kpić z konstruktorów za pomocą mockito, tylko metody. Ale zgodnie z wiki na stronie kodowej Google Mockito istnieje sposób na oszukanie zachowania konstruktora poprzez utworzenie metody w Twojej klasie, która zwraca nową instancję tej klasy. wtedy możesz kpić z tej metody. Poniżej znajduje się fragment bezpośrednio z wiki Mockito :
Wzorzec 1 - wykorzystanie metod jednowierszowych do tworzenia obiektów
Aby użyć wzorca 1 (testowanie klasy o nazwie MyClass), należy zamienić wywołanie typu
Foo foo = new Foo( a, b, c );
z
Foo foo = makeFoo( a, b, c );
i napisz metodę jednowierszową
Foo makeFoo( A a, B b, C c ) {
return new Foo( a, b, c );
}
Ważne jest, aby metoda nie zawierała żadnej logiki; tylko jedna linia, która tworzy obiekt. Powodem tego jest to, że sama metoda nigdy nie będzie testowana jednostkowo.
Kiedy przyjdziesz, aby przetestować klasę, testowany obiekt będzie w rzeczywistości szpiegiem Mockito, z zastąpioną tą metodą, aby zwrócić próbę. Dlatego testujesz nie samą klasę, ale jej nieznacznie zmodyfikowaną wersję.
Twoja klasa testowa może zawierać członków, takich jak
@Mock private Foo mockFoo;
private MyClass toTest = spy(new MyClass());
Na koniec w swojej metodzie testowej wyśmiewasz wywołanie makeFoo za pomocą linii takiej jak
doReturn( mockFoo )
.when( toTest )
.makeFoo( any( A.class ), any( B.class ), any( C.class ));
Możesz użyć dopasowań, które są bardziej szczegółowe niż jakiekolwiek (), jeśli chcesz sprawdzić argumenty przekazywane do konstruktora.
Jeśli chcesz tylko zwrócić wyszydzony przedmiot ze swojej klasy, myślę, że to powinno działać dla Ciebie. W każdym razie możesz przeczytać więcej o mockowaniu tworzenia obiektów tutaj:
http://code.google.com/p/mockito/wiki/MockingObjectCreation