2012-05-23 3 views
2

많은 클래스의 정적 메서드를 사용하여 클래스의 단위 테스트를 작성해야하며, 대부분 클래스 자체에서 정의 된 일종의 상수를 반환합니다. , 그리고 테스트 자체에서 일을 주장하는 테스트의 가치에 대해 숙고하고있었습니다. 예 :자신의 클래스의 상수를 반환하는 정적 메서드를 테스트하기위한 단위 테스트를 작성하십시오.

public static function stringToHex($color = null) { 
    switch($color) { 
     case 'green': 
      return self::OK; // self::OK = '#00cc00' 
     break; 
     default 'red': 
      return self::DANGER; // '#cc0000' 
    } 
} 

자체 테스트 할 때 정의한 클래스의 반환 값을 효과적으로 테스트하려면 어떻게해야합니까?

public function teststringToHex() { 
    $this->assertEquals(MyClass::stringToHexColor('green'), MyClass::OK); 
} 

을하지만 내가 테스트도의 가치를 모르는 무언가를 할 결과를 주장하고 권리로하지 않는 것 : 내 머리 위로 떨어져 그것은 다음과 같이 될 것이다.

답변

0

지금 테스트 신뢰가 정확하고 구현 세부 사항에 따라 달라집니다. 상수가 올바른 가치가 있다는 것을 신뢰하지 않는 한 괜찮습니다. 그렇다면, 당신은 어떻게 시험 방법 작업에`$ expectedHex`을 통과 않는 DataProvider를

/** 
* @dataProvider provideColorToHexMapping 
*/ 
public function testStringToHex($colorName, $expectedHex) { 
    $this->assertEquals(
     $expectedHex, 
     MyClass::stringToHexColor($colorName) 
    ); 
} 
public function provideColorToHexMapping() 
{ 
    return array(
     array('green', '#00cc00'), 
     … 
    ); 
} 
+0

으로 예를 들어, 기대의 16 진수 값을 전달해야합니까? – Dunhamzzz

+0

@Dunhamzzz dataprovider가 전달합니다. – Gordon

관련 문제