Piszę aplikację na iPhone'a, która musi pobrać dane z serwera WWW. Używam NSURLConnection
do wykonania żądania HTTP, które działa dobrze, ale mam problem z testowaniem mojego kodu w przypadku, gdy odpowiedź ma kod błędu HTTP (jak 404 lub 500).Testowanie użycia NSURLConnection ze stanami błędów odpowiedzi HTTP
Używam GTM do testowania jednostkowego i OCMock do kpiny.
Gdy serwer zwraca błąd, połączenie nie wymaga connection:didFailWithError:
na delegata, ale wzywa connection:didReceiveResponse:
, connection:didReceiveData:
i connectionDidFinishLoading:
zamiast. Obecnie sprawdzam kod stanu w odpowiedzi pod numerem connection:didReceiveResponse:
i dzwonię pod numer cancel
, gdy kod stanu wygląda jak błąd uniemożliwiający wywołanie connectionDidFinishLoading:
, w którym zgłaszana jest pomyślna odpowiedź.
Zapewnienie statycznego upięcia NSURLConnection
jest proste, ale chcę, aby mój test zmienił zachowanie, gdy wywoływana jest jedna z metod fałszywego połączenia. W szczególności chcę, aby test był w stanie stwierdzić, kiedy kod wywołuje cancel
na fałszywym połączeniu, więc test może przestać wywoływać connection:didReceiveData:
i connectionDidFinishLoading:
na delegata.
Czy istnieje sposób na sprawdzenie, czy cancel
został wywołany na fałszywym obiekcie? Czy istnieje lepszy sposób testowania kodu, który używa NSURLConnection
? Czy istnieje lepszy sposób na obsługę błędów HTTP?
Czy mógłby Pan/Pani pokazać przykładowy kod na temat tego, jak jednostka testuje połączenia z NSURLConnection? –