2013-07-04 1 views
1

어디에서 문제를 찾고 많은 시간을 보냈지 만 찾을 수 없었습니다.phpunit dbunit @dataProvider가 작동하지 않습니다.

"testAdd가 오류를 발생했습니다 : 누락 된 인수"입니다. 테스트를 실행할 때 단순히 dataProvider가 실행되지 않습니다. 나는 dataProvider에 die()를 넣으려고했지만 죽지 않았습니다.

class LabelEntityModelTest extends PHPUnit_Extensions_Database_TestCase 
{ 

    private static $connection = NULL; 

    /** 
    * @var \CXNS\DB\Connections\Connection 
    */ 
    private static $appConnection; 
    private static $table; 

    public function __construct() 
    { 
     if (self::$connection) { 
      return; 
     } 

     $pdo = new \PDO($GLOBALS['DB_DSN'], $GLOBALS['DB_USER'], $GLOBALS['DB_PASSWD']); 
     self::$appConnection = new \CXNS\DB\Connections\Connection(array("prefix" => "test_", "driver" => "pdo", "resource" => $pdo)); 
     self::$appConnection->connect(); 

     self::$connection = $this->createDefaultDBConnection($pdo, 'mysql'); 

     self::$table = $this->createXMLDataSet(__DIR__ . '/fixtures/tables.xml'); 
    } 

    protected function getDataSet() 
    { 
     return self::$table; 
    } 

    public function getConnection() 
    { 
     return self::$connection; 
    } 

    public function getAppConnection() 
    { 
     return self::$appConnection; 
    } 

    /** 
    * @group onlyThis 
    * @dataProvider providerAdd 
    */ 
    public function testAdd($labelId, $entityId) 
    { 
     $lem = new \appLibs\Labels\LabelEntityModel($this->getAppConnection(), "contacts"); 

     $lem->add($labelId, $entityId); 

     $count = $this->getAppConnection() 
      ->select("id") 
      ->from("label_relationships") 
      ->where("label_id = %i", $labelId) 
      ->where("table_ref_id = %i", $entityId) 
      ->count(); 

     $this->assertEquals(1, $count, "insert failed"); 
    } 

    public function providerAdd() 
    { 
     return array(
      array(2, 3), 
      array(3, 4), 
      array(3, 4), 
      array(3, 4), 
      array(3, 4), 
      array(3, 4), 
      array(5, 7) 
     ); 
    } 
} 

여러분의 도움에 감사드립니다 :

내 코드입니다.

답변

-1

TestCase 생성자를 절대 덮어 쓰면 안됩니다. PhpUnit은 초기화 목적으로 및 setUpBeforeClass이라는 특수한 메서드가 있으므로 사용할 것을 강력히 권장합니다. 이것이 문제의 원인이라고 확신합니다.

+0

PHPUnit_Extensions_Database_TestCase를 사용하면 아무 문제가 없다고 생각합니다. 데이터베이스 테스팅을 원한다면 필요하기 때문입니다. – artsylar

관련 문제