2017-12-05 5 views
0

저는 Laravel을 사용하여 웹 응용 프로그램을 개발 중입니다. 나는 Unit Test에 약간의 논리를 원합니다. 그래서 아래처럼 Unit Test 클래스를 만들었습니다.Laravel의 테스트 클래스에 둘 이상의 함수를 추가 할 수 없습니다.

class AcceptationTest extends TestCase 
{ 
    /** 
    * A basic test example. 
    * 
    * @return void 
    */ 
    public function testCountUpWhenDifferenceIsOverOneWeek() 
    { 
     $acceptationRepo = new AcceptationRepo; 
     //must count up on 5/12/2017 
     $need_count_up = $acceptationRepo->shouldCountUpTwoDWeek("11-28-2017"); 
     $this->assertTrue($need_count_up); 
    } 


} 

터미널에서 단위 테스트를 실행하면 제대로 작동합니다. 그런 다음 또 다른 테스트 기능을 추가했습니다. 그래서 시험 수업은 이렇게 보일 것입니다.

class AcceptationTest extends TestCase 
{ 
    /** 
    * A basic test example. 
    * 
    * @return void 
    */ 
    public function testCountUpWhenDifferenceIsOverOneWeek() 
    { 
     $acceptationRepo = new AcceptationRepo; 
     //must count up on 5/12/2017 
     $need_count_up = $acceptationRepo->shouldCountUpTwoDWeek("11-28-2017"); 
     $this->assertTrue($need_count_up); 
    } 

    public function testNotCountUpIfDifferenceIsExactlySeven(){ 
     $acceptationRepo = new AcceptationRepo; 
     //must count up on 5/12/2017 
     $need_count_up = $acceptationRepo->shouldCountUpTwoDWeek("11-29-2017"); 
     $this->assertTrue(!$need_count_up); 

    } 
} 

터미널에서 테스트를 실행하면이 오류가 표시됩니다.

enter image description here

나는 조심스럽게 내 두 번째 기능을 확인하고 오류가 없다. 첫 번째 기능을 제거하고 두 번째 기능 만 실행하는지 확인하십시오. 그래서 시험 수업은 이렇게 보일 것입니다.

class AcceptationTest extends TestCase 
{ 


    public function testNotCountUpIfDifferenceIsExactlySeven(){ 
     $acceptationRepo = new AcceptationRepo; 
     //must count up on 5/12/2017 
     $need_count_up = $acceptationRepo->shouldCountUpTwoDWeek("11-29-2017"); 
     $this->assertTrue(!$need_count_up); 

    } 
} 

위에서 알 수 있듯이 테스트 클래스에는 하나의 기능 만 있으며 새로 추가 된 기능입니다. 터미널에서 테스트를 다시 실행하면 오류가 발생하지 않고 작동합니다. 문제가 하나 이상의 기능을 추가하는 것을 알게되었습니다. 그러나 나는 그것을 할 필요가있다. 터미널에서 오류 메시지를 읽고 단위 테스트를 전혀 다루지 않습니다. 내가 실행하면

나는 그것이 나에게

enter image description here

답변

0

하나의 옵션은 코드에서 상수를 제거하는 것이 오류를주고,이 두 가지 속성

protected $preserveGlobalState = FALSE; 
protected $runTestInSeparateProcess = TRUE; 

를 추가했습니다. 상수를 사용하는 대부분의 장소에서 env 변수 또는 config 변수를 참조 할 수 있어야합니다. 당신이 당신의 그것은

if (!defined('SITE_NAME')) define('SITE_NAME', 'foobar'); 
+0

상수 정의하고 어디든지 시험을 추가 할 수 있습니다, 마지막으로

class AcceptationTest extends TestCase { protected $preserveGlobalState = FALSE; protected $runTestInSeparateProcess = TRUE; 

:

다른 옵션은 각각의 테스트는 자신의 프로세스를 얻을 수 있도록 이러한 플래그를 사용하는 것입니다 그냥 오류를 보여줍니다. –

+0

방금 ​​오류를 표시하기 위해 질문을 편집했습니다. –