我正在尝试使用数据库模拟运行非常简单的PHPUnit测试类。我正在尝试使用一些值创建数据集。我正在使用MySQL XML对象。
我的MySQL XML对象是:
<?xml version="1.0"?>
<mysqldump xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<database name="some_test_db">
<table_data name="some_test_table">
<row>
<field name="id">1</field>
<field name="content_time">1382774967</field>
<field name="ip">10.0.0.10</field>
<field name="content">test message</field>
</row>
</table_data>
</database>
</mysqldump>
我在测试类中的PHP代码是:
<?php
class TestOfDatabase extends PHPUnit_Extensions_Database_TestCase {
protected $pdo;
public function __construct() {
$this->pdo = new PDO('sqlite::memory:');
}
protected function setUp() {
$this->getConnection()->createDataSet();
}
/**
* @return PHPUnit_Extensions_Database_DB_IDatabaseConnection
*/
public function getConnection() {
return $this->createDefaultDBConnection($this->pdo, 'sqlite');
}
/**
* @return PHPUnit_Extensions_Database_DataSet_IDataSet
*/
public function getDataSet() {
return $this->createMySQLXMLDataSet(dirname(__FILE__).'/dataset.xml');
}
public function testGetInstance() {
$this->assertGreaterThan(0, $this->getConnection()->getRowCount('some_test_table'));
}
}
当我运行TestofDatabase时,我得到“常规错误1:没有这样的表:some_test_table”。
我无法理解为什么模拟数据库没有填充我插入到dataset.xml的数据。
我已经检查过路径没问题。
答案 0 :(得分:1)
您正在使用MySQL的实用程序生成的XML文件。这可能只能重新加载到MySQL数据库中。由于您使用SQLite进行测试,请尝试使用更简单的XML样式作为数据源:http://phpunit.de/manual/3.7/en/database.html#database.xml-dataset
<?xml version="1.0" ?>
<dataset>
<table name="some_test_table">
<column>id</column>
<column>content_time</column>
<column>ip</column>
<column>content</column>
<row>
<value>1</value>
<value>1382774967</value>
<value>10.0.0.10</value>
<value>test message</value>
</row>
</table>
</dataset>