2012-03-19 4 views
1

우리는 CodeIgniter를 사용하여 RESTful API를 만들고 있으며 컨트롤러 테스트를 작성하는 방법을 결정하려고합니다. 컨트롤러는 클라이언트 응용 프로그램에서 일부 입력을 받아 하나 이상의 모델을 사용하여 비즈니스 로직을 수행 한 다음 JSON을 출력합니다.CodeIgniter 컨트롤러 테스트

테스트의 목적은 주로 회귀 테스트로서, 웹/PHP 개발자가 아닌 클라이언트 측 엔지니어가 서버 코드를 터치해야 할 경우 무언가를 깨뜨리지 않도록합니다.

CI에서 컨트롤러 작업을 테스트하려면 어떻게해야합니까?

나는 현재 두 가지 아이디어를 가지고있다 : 1.) 데이터베이스와의 셋업을 수행하는 테스트 함수/클래스를 생성하고, curl을 통해 컨트롤러를 호출하여 클라이언트의 동작을 시뮬레이션한다. 2. 컨트롤러를 테스트하지 말고, 모델의 모든 로직을 유지하고, 모델에 대한 테스트를 작성하십시오.

어떤 견해가 더 강력하고 사용하기 쉽겠습니까? (또는 추가 제안?)

+0

어딘가에 떠 다니는 CI 편안한 API 라이브러리가 있다고 생각합니다. 브라우저를 통해 올바른 길을 안내하는 방법을 확인하십시오. 죄송 합니다만 링크로 연결해 드릴 수는 없습니다. – Philip

+0

그들은 단위 테스트를 받았지만 그것이 필요한지 확실하지 않습니다. 경우에 대비하여 http://codeigniter.com/user_guide/libraries/unit_testing.html에 게시됩니다. – Joseph

답변

0

품질 테스트를 원한다면 둘 다 필요합니다. 코드를 테스트하는 방법과 오류가있는 코드를 처리하는 방법은 이며 클라이언트 자체가 잠재적 인 문제를 어떻게 보는지 테스트하는 방법입니다.

1

CodeIgniter's own testing library (CodeIgniter 2)뿐만 아니라 use PHPUnit with CodeIgniter with FooStack까지 가능합니다. CodeIgniter 2.x를 사용하고 있다면, CodeIgniter 1.x 에서처럼 통합하기가 쉽지 않습니다.

FooStack 자체는 모델과 컨트롤러를 모두 다루는 예제 테스트와 함께 제공되며 좋은 시작점을 제공 할 수 있습니다.

JSON을 반환하는 컨트롤러를 테스트하는 또 다른 방법은 Selenium IDE를 사용하는 것일 수 있습니다. 이렇게하면 필요한 입력을 확인하는 간단한 테스트를 실행하여 완료된 방법을 걱정하지 않고 예상 된 결과를 반환 할 수 있습니다. FooStack 또는 유닛 테스팅 라이브러리는 아마도 더 많은 커버리지와 확신을 줄 것입니다.

0

당신은 당신의 테스트/컨트롤러를 통해 컨트롤러를 확인할 수있는이 같은

$_POST['name'] = 'testuser'; 
$this->CI->index_post(); 
$data = output(); 
# Decode Response data 
$actualArray = json_decode($data, true); 

$this->assertNotEmpty($actualArray['status'], 'Status is empty'); 

같은 테스트 컨트롤러에 양식 데이터를 전달을 통해 또한 컨트롤러의 유효성을 검사 할 수 있습니다.