Я потратил много времени на поиск проблемы, но я ничего не нашел.
Это sais "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) ); } }
Спасибо за помощь.
Вы никогда не должны перезаписывать конструктор TestCase. PhpUnit имеет специализированные методы для целей инициализации, называемые setUp
и setUpBeforeClass
, поэтому я настоятельно рекомендую вам использовать это. Я уверен, что это причина вашей проблемы.