phpunit dbunit @dataProvider不起作用 [英] phpunit dbunit @dataProvider doesn't work

查看:227
本文介绍了phpunit dbunit @dataProvider不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我花了很多时间搜索问题出在哪里,但是我什么都没找到.

I spent a lot of time by searching where is the problem, but i haven't find anything.

它说"testAdd导致错误:缺少参数".当我运行测试时,只是没有执行dataProvider.我试图将die()放入dataProvider中,但它尚未消失.

It sais "testAdd caused an ERROR: Missing argument". Simply the dataProvider isn't executed, when I run the test. I tried to put die() into the dataProvider and it hasn't died.

这是我的代码:

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

谢谢您的帮助.

推荐答案

永远不要覆盖TestCase构造函数. PhpUnit有一个专门用于初始化目的的方法,称为setUpsetUpBeforeClass,因此我强烈建议您使用它. 我很确定这是造成您问题的原因.

You should never overwrite TestCase constructor. PhpUnit has a specialized methods for initialization purposes called setUp and setUpBeforeClass, so I strongly suggest you to use that. I´m pretty sure this is the cause of your problem.

这篇关于phpunit dbunit @dataProvider不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆