2014-08-11 7 views

Odpowiedz

4

Chociaż pytasz dlaczego DoNothing nie działa, mam, które rzeczywiście chcą uchwycić argument methodToStub.

Najprostszym sposobem na to byłoby to:

verify(mockObject).methodToStub(captor.capture()); 

Jeśli chcesz tylko drwicie nic nie robić w ogóle na wywołanie metody void, Pamiętaj, że nic nie robi to domyślny dla pustych metod na drwinach.

Jeśli z jakiegoś powodu nadal trzeba zadzwonić pod numer doNothing, należy zachować ostrożność z nawiasami. Powinno to wyglądać tak:

doNothing().when(mockObject).methodToStub(any()); 

lub DoNothing(), gdy (mockObject) .methodToStub (captor.capture());.

+0

Dzięki za odpowiedź. Właściwie to nie chcę, aby nic się nie stało, gdy wywoływany jest methodToStub. Zrozumiałem (może niepoprawnie), że ArgumentCaptor był potrzebny ze względu na użycie generycznych w metodzie stubbed. – mstrom

+0

Pozwolę sobie upewnić się, że rozumiem: po prostu chcesz, aby nic się nie stało, gdy wywoływany jest methodToStub? A mockObject to pozorny obiekt stworzony z użyciem makiety (YourClass.class)? –

+0

Tak, zgadza się! – mstrom

35

Ten pośredniczący jest źle:

doNothing().when(mockObject.methodToStub(captor.capture())); // wrong 

methodToStub(...) musi być poza when jeśli za pomocą tego stylu API (powinna ona zawierać tylko pozornie):

doNothing().when(mockObject).methodToStub(captor.capture()); // correct 

Tho uwagi jednakże:

  1. doNothing to ustawienie domyślne dla metod pustych dla próbnego.
  2. Można użyć BDDMockito aliasy, które pozwala swój kod aby być prawdziwe à la Behavior Driven Development
Powiązane problemy