phpunit dbunit @dataProvider не работает

Я потратил много времени на поиски, в чем проблема, но ничего не нашел.

Пишет, что "testAdd вызвал ОШИБКУ: отсутствует аргумент". Просто dataProvider не выполняется, когда я запускаю тест. Я попытался поместить die() в dataProvider, и он не умер.

Это мой код:

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)
        );
    }
}

Спасибо за помощь.


person Huholoman    schedule 04.07.2013    source источник


Ответы (1)


Вы никогда не должны перезаписывать конструктор TestCase. В PhpUnit есть специальные методы для целей инициализации, называемые setUp и setUpBeforeClass, поэтому я настоятельно рекомендую вам их использовать. Я почти уверен, что это причина вашей проблемы.

person Bram Gerritsen    schedule 06.07.2013
comment
Я думаю, что нет ничего плохого в использовании PHPUnit_Extensions_Database_TestCase, потому что вам это нужно, если вы хотите проводить тестирование базы данных. - person artsylar; 19.08.2016