2011-08-27 6 views
4

이 iPhone 프로젝트를 위해 일부 TDD를 시작해야합니다. 문제는 API 데이터를 꽤 많이 사용한다는 것입니다.API 데이터와 함께 UISpec을 사용하기위한 팁 및 자습서

저는 TDD를 구현하는 방법을 보여주는 훌륭한 튜토리얼/가이드/예제 프로젝트를 찾고 있는데, 이는 각 테스트가 iPhone에서 실행되기 전에 데이터베이스를 설정하는 방법입니다. 나는 UISpec을 사용하는 방향으로 기울어 져있다.하지만이 방법이 더 좋다면 다른 테스트 스위트를 살펴볼 의향이있다. 또한이 프로젝트에는 이미 자체 테스트를 위해 UISpec을 사용하는 RestKit이 포함되어 있으므로 UISpec은 이미 Xcode 프로젝트에 포함되어 있습니다.

답변

12

나는 RestKit 프로젝트의 수석 개발자이며 이 아니며은 테스트에 UISpec을 사용하도록 권장합니다. RestKit의 UISpec 사용 (더 정확하게는 커스터마이징 된 버전)은 개발 초반의 유물이었습니다. 기능 테스트를 위해 UISpec을 사용하고 있었고 많은 라이브러리를 가지고 다니는 것을 주저했습니다. 요즘 UISpec은 본질적으로 포기입니다. 제 UI/기능 테스트를 위해 Square에서 KIF를 사용하는 것으로 옮겼습니다.

새로운 프로젝트에 대한 단위 테스트를 위해 저는 SenTestingKit에 내장되어있는 키위 (https://github.com/allending/Kiwi)를 좋아하고 RSpec 스타일 테스트를 제공합니다. Pivotal Labs 및 GHUnit (http://gabriel.github.com/gh-unit/)의 Cedar (https://github.com/pivotal/cedar)도 견고합니다. RestKit은 가까운 장래에 어느 시점에서 UISpec으로 전환 될 가능성이 높습니다.

지금, 테스트를 위해 데이터베이스를 설정하는 방법에 대한 질문이 있습니다. RestKit의 RKSpecEnvironment.h/m 파일을 보면 단위 테스트에 유용한 방법이 많이 있습니다. RestKit의 핵심 데이터 통합을 사용한다고 가정하면 RKSpecNewManagedObjectStore() 메소드가 핵심 데이터 환경을 해체하고 영구 저장소를 삭제하여 명확한 데이터베이스로 백업하도록 설정합니다.

RestKit 자체 단위 테스트는 API 데이터와 단절하는 방법에 대한 좋은 참고 자료 (위의 테스트 장치 문제 제외)를 제공 할 수 있습니다. RKSpecResponseLoader 클래스는 비동기 REST 요청을 절차 단계 (RKObjectLoader의 위임자 역할을하며 요청을로드하기 위해 실행 루프를 돌리는)로 테스트 할 때 유용합니다. 따라서 일반적인 패턴은 데이터베이스 상태를 지우고 필요한 개체를 설정 한 다음 API 상호 작용을 수행하고 핵심 데이터의 결과 또는 새 상태에 대해 어설 션하는 것입니다.

+0

감사합니다. 블레이크. 네가 이것에 무게를다는 것이 좋겠다. 나는 전에 KIF에 대해 들어 본 적이 없었다. 그래서 당신은 API 테스트를 위해 RestKit과 같은 .json fixture 파일을 가진 간단한 sinatra 서버를 사용할 것을 권장 할 것입니다. 가장 쉬운 접근 방법 인 것처럼 보입니다. FactoryGirl 작업을하는 것이 가치가 있을지 궁금합니다. –

관련 문제