2015-11-16 9 views
5

Obecnie badam, jak skutecznie dodawać testy jednostkowe do ViewControllers mojej aplikacji. Do tej pory działało całkiem dobrze, dopóki nie próbowałem, że określony kontroler widoku prezentuje inny.OCMock i UIViewController

Używam OCMock i XCTest. Test jest następujący

id partialMock = OCMPartialMock([TestViewController class]); 
[partialMock doSomeStuff]; 
OCMVerify([partialMock presentViewController:[OCMArg any] animated:[OCMArg any] completion:[OCMArg any]]); 

Jak widać, chcę tylko, aby sprawdzić, presentViewController został wezwany do testowanego kontrolera widoku wewnątrz doSomeStuff funkcji. Zwróć uwagę, że podany przykład jest uproszczoną wersją tego, co aktualnie mam. Główną różnicą jest to, że sprawdzam, czy argumentem jest inny wyśmiewany obiekt.

Problem jest od doSomeStuff metoda nie jest skrótowa, połączenie jest następnie przekazywane do rzeczywistej instancji TestViewController, która następnie wywołuje presentViewController na sobie, a następnie nie odpala weryfikacji partialMock.

Czy jest coś, czego mi brakuje? Czy to naprawdę nie do zniesienia, co próbuję osiągnąć?

+0

Hi Marca, mogę się mylić tutaj, ale ustawiania częściowej makiety na obiekcie klasy. Zazwyczaj w celu ustawienia zwykłego symulowanego obiektu używasz klasy, ale dla częściowego powinieneś ustawić ją z obiektu, który chcesz "szpiegować", w tym przypadku twój viewController –

+0

Masz rację, w rzeczywistości mój uproszczony przykład nie jest całkiem w porządku. Ponieważ mam w rzeczywistości dwa kontrolery widoku, ale to sprawia, że ​​coś wymyślam. –

Odpowiedz

1

Można skrótową metody, którą chcesz wyciszyć za pomocą andDo(nil) jak opisano w 2.10: http://ocmock.org/reference/

+0

jest sposób, w jaki mogę zastosować tę metodę dla każdej instancji klasy? Czuję, że nie, a ponieważ metoda jest wywoływana z samej klasy TestViewController, używa metody stubbed. Nie jestem pewien, czy jestem w 100% zrozumiały, na czym polega mój problem. –

+0

Działa .... Nie wiem, co było nie tak wcześniej, myślę, że był związany z animowanym: [OCMArg any], który dokonywał mojej weryfikacji zawieść –

Powiązane problemy