Chcę przetestować UICollectionView, który znajduje się wewnątrz kontrolera UIViewController (np. Chcę przetestować, że UICollectionView ma liczbę komórek, które oczekuję, że ma w moim test jednostkowy)Jak testować UICollectionView w ramach UIViewController
Moja próba jednostka opiera się na następującym blogu (o tym, jak jednostka testowa kontroler widoku): http://yetanotherdevelopersblog.blogspot.co.il/2012/03/how-to-test-storyboard-ios-view.html
w badanej jednostki jestem w stanie uzyskać wskaźnik do UICollectionView w UIViewController której jestem testowanie. Oto kod w metodzie setup mojego testu za:
storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"MainViewController"];
[viewController performSelectorOnMainThread:@selector(loadView) withObject:nil waitUntilDone:YES];
self.collectionView = viewController.collectionView
Niestety, nie ma komórki w tym UICollectionView (tj self.collectionView.visibleCells.count
równa 0, a więc nie mogę uzyskać dostęp do komórek i test, który dane jest to, co ja spodziewałem się, be), chociaż podczas debugowania widzę, że moja aplikacja dodaje te komórki do widoku kolekcji.
Co robię źle? Wszelkie wskazówki & wskazówki dotyczące testowania jednostki UICollectionView w ramach kontrolera UIViewController?
Edytuj: Po pomocy Roshana mogę teraz zawęzić mój problem. Jestem jednostką testującą UIViewController, który ma UICollectionView. W moim teście jednostkowym chcę przetestować, że wartości komórek wewnątrz CollectionView są tym, czego się spodziewam. Ale collectionView:cellForItemAtIndexPath:
nie jest wywoływany na moim ViewController i dlatego moje komórki nie istnieje, gdy jest to wywoływane jako test jednostkowy. Dowolny pomysł?
Dzięki! po wywołaniu "widoku" zamiast "loadView" wywoływana jest metoda "viewDidLoad". Wciąż mam problem, że metoda 'collectionView: cellForItemAtIndexPath:' nie jest wywoływana. Próbowałem wywoływać "reloadData" na collectionView, ale nadal nie jest on wywoływany. Dowolny pomysł? – nirch
Czy możesz umieścić jakiś kod z 'MainViewController' związanego z tą metodą? (implementacja, gdzie dzwonisz, itp.) – Roshan
Myślę, że rozumiem, dlaczego tak się dzieje. "collectionView: cellForItemAtIndexPath:" jest wywoływane tylko dla widocznych komórek. Ponieważ jest to test jednostkowy, nie mam żadnych widocznych komórek, a zatem nie jest on wywoływany. Myślę więc, że nie można tego przetestować za pomocą testów jednostkowych - czy mam rację? – nirch