Как я могу создать экземпляр класса pdo в PHPUnit_Framework_TestCase?PHPUnit - Как создать экземпляр класса pdo в PHPUnit_Framework_TestCase?
, например, это мой \test\SuitTest.php
,
namespace Test;
use PHPUnit_Framework_TestCase;
class SuiteTest extends PHPUnit_Framework_TestCase
{
protected $PDO = null;
public function __construct()
{
parent::__construct();
$this->PDO = new \Foo\Adaptor\PdoAdaptor(); // the pdo is not instantiated at all - I think!
}
protected function truncateTables ($tables)
{
foreach ($tables as $table) {
$this->PDO->truncateTable($table);
}
}
/**
* DO NOT DELETE, REQUIRED TO AVOID FAILURE OF NO TESTS IN FILE
* PHPUnit is ignoring the exclude in the phpunit.xml config file
*/
public function testDummyTest()
{
}
}
Я хочу использовать класс PDO, что я использую его для разработки и производства, что в, \app\source\Adaptor\PdoAdaptor.php
,
<?php
namespace Foo\Adaptor;
use PDO;
class PdoAdaptor
{
protected $PDO = null;
protected $dsn = 'mysql:host=localhost;dbname=phpunit', $username = 'root', $password = 'xxxx';
/*
* Make the pdo connection.
* @return object $PDO
*/
public function connect()
{
try {
$this->PDO = new PDO($this->dsn, $this->username, $this->password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
$this->PDO->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Unset props.
unset($this->dsn);
unset($this->username);
unset($this->password);
} catch (PDOException $error) {
// Call the getError function
$this->getError($error);
}
}
public function truncateTable($table)
{
$sql = "TRUNCATE TABLE $table";
$command = $this->PDO->prepare($sql);
$command->execute();
}
}
Я получаю эта ошибка при запуске phpunit
для тестирования моих кодов,
Fatal error: Call to a member function prepare() on null
pdo не создается вообще внутри метода construct
в SuiteTes
t - я думаю!
Это мой реж структура,
Кроме того, ваше исключение не игнорируется; что исключение для покрытия кода, а не какие тесты должны быть запущены – Amelia
извините, я не получаю это ... – laukok
Комментарий к phpunit не игнорирует ваши тесты в вашем вопросе; phpunit не игнорирует тесты. Он игнорирует классы при использовании опций '--coverage- *' – Amelia