Я разрабатываю модульные тесты для тестирования функций модели.
Я использую PHP PDO с DBUnit 1.1.2 и PHPUnit 3.6.10, и мой набор данных представляет собой файл yml.
Мне нужно отключить проверку внешних ключей во время загрузки приборов в базу данных. После этого мне нужно снова включить его, чтобы я мог выполнять свои тесты с этими ограничениями.
Ниже приведен фрагмент (не весь файл класса) кода в моем обобщенном файле Testcase, который я буду включать для любого нового тестового примера, который я разрабатываю.
Когда я запускаю тестовый пример с этими настройками, эти настройки я обнаружил, что $ pdo-> exec () не выполняется.
Что не так с моим подходом? Есть ли лучшая альтернатива?
class MyTestCase extends PHPUnit_Extensions_Database_TestCase {
public function getConnection() {
$this->pdo = $this->getPDO();
echo "BEFORE FOREIGN KEY QUERY\n";
$conn = $this->createDefaultDBConnection($this->pdo, 'my-schema');
$this->pdo->exec("set foreign_key_checks=0");
return $conn;
}
private function getPDO() {
include BASEPATH . '/application/config/database.php';
$dbt = $db['testing'];
$conn_string = sprintf("%s:host=%s;dbname=%s", $dbt['dbdriver'], $dbt['hostname'], $dbt['database']);
$pdo = new PDO($conn_string, $dbt['username'], $dbt['password']);
return $pdo;
}
public function getDataSet() {
echo "BEFORE FOREIGN KEY QUERY in getDataSet\n";
$this->pdo->exec("set foreign_key_checks=1");
return new PHPUnit_Extensions_Database_DataSet_YamlDataSet(ROOTPATH."/application/tests/data/my-dataset.yml");
}
public function setUp() {
parent::setUp();
}