2013-05-20 2 views
1

요약 : 테스트에서 모듈 어설 션을 사용하고 싶습니다.Codeception 사용, Symfony2 기능적 서비스 테스트 어설 션을 어떻게 추가합니까?

이전에는 PHPUnit 테스트를 사용하여 Symfony2 서비스를 테스트했습니다. 이것은 괜찮지 만, Codeception Symfony2 Module이 제공하는 일부 기능과 더 깨끗한 테스트 스타일을 사용하고 싶습니다. 중부 유럽 표준시와이 테스트를 통과

public function getServiceUrl(\ServiceGuy $I) { 
    $this->myservice = $I->grabServiceFromContainer("myservice"); 
    $I->wantTo("get service URL"); 
    $I->seeTrue("http://example.com/services" 
        == $this->ecservice->getServiceUrl()); 
} 

와 ServiceCest.php 테스트 파일이 있습니다

은 내가 구축하고 생성 실행

class_name: ServiceGuy 
    modules: 
    enabled: [Symfony2, Doctrine2, Filesystem, ServiceHelper] 

다음 services.suite.yml을 가진 새로운 제품군을 만들어 ServiceHelper.php 파일에 어설 션 기능을 추가했기 때문입니다.

class ServiceHelper extends \Codeception\Module { 
    function seeTrue($flag) { 
    $this->assertTrue($flag); 
    } 
} 

Module 클래스에는 테스트에서 직접 사용할 수있는 풍부한 어설 션 기능 집합이 있습니다. 하지만 모듈 객체가 테스트에 사용 가능하다고 생각하지 않습니다. Assession 함수의 범위를 ServiceHelper에 추가해야하는 것은 반복적 인 것처럼 보일 것입니다. 더 좋은 방법이 있습니까?

예를 들어 phpunit 테스트에서 이러한 어설 션이있을 수 있습니다.

$ station = $ ecservice-> getStation ("Auckland");

$ this-> assertEquals (1, count ($ stations)); $ this-> assertEquals ('Auckland', $ station-> getDisplayName());

제 질문은 기능 테스트에서 이러한 모든 주장을 수행 할 수있는 방법인지 아니면 테스트 특정 어설 션을 도우미로 많이 옮겨야하는지 여부입니다.

모듈은 이러한 많은 기능을 제공하는 것으로 보이지만 더 이상 사용되지 않습니다.

나는 \ PHPUnit_Framework_Assert :: assertEquals (1, count ($ stations))을 넣으려고 시도했다. 테스트에서 -하지만 테스트 하니스에서 처리하지 않은 오류에 대해서는 예외가 발생합니다.

감사합니다 앤드류

PS 나는이 'codeception'을 태그 거라고하지만 난 아직 지점이 없습니다. 누군가 다른 사람이 할 수 있습니다.

답변

2

옙. 너무 많은 오용 때문에 우리는 그것을 비난했다.

기존 PHPUnit의 테스트 스타일을 사용해야합니다. Codeception에는 다음과 같은 두 가지 옵션이 있습니다. generate : test - Codeception 헬퍼를 얻거나 phpunit을 사용하여 마법없이 PHPUnit 테스트를 수행합니다.

제 의견을 읽어주세요. 컨테이너 테스트를 할 때 몇 가지 팁이 있습니다.

http://codeception.com/02-12-2013/testing-symfony2.html