phpunit не заселяет светильники в Laravel 4
Я пытаюсь добавить каркас модульного тестирования в уже существующий проект Laravel. Я прочитал руководство по PHPUnit и пытаюсь настроить среду sqlite с использованием наборов данных.xml для заполнения тестовых данных и основной миграции для создания схемы, но реальные тестовые данные, по-видимому, не заполняются в таблицах.
Я начал добавлять phpunit и dbunit в файл composer.json и обновлять их. Я добавил vendor/bin в $PATH, чтобы виртуальная машина знала, где его найти.
Затем я расширил существующий класс TestCase с помощью getConnection(), getDataSet() и setUp(), который содержит
class TestCase extends Illuminate\Foundation\Testing\TestCase {
static private $pdo = null;
private $conn = null;
public function setUp() {
parent::setUp();
Artisan::call('migrate');
$this->seed();
}
public function createApplication() {
$unitTesting = true;
$testEnvironment = 'testing';
return require __DIR__ . '/../../bootstrap/start.php';
}
public function getDataSet() {
parent::getDataSet();
}
public function getConnection() {
if ($this->conn === null) {
if (self::$pdo == null) {
self::$pdo = new PDO('sqlite::memory:');
}
$this->conn = $this->createDefaultDBConnection(self::$pdo, ':memory:');
}
return $this->conn;
}
}
Подсветка \ Фундамент \ Тестирование \ Тестовый набор, который я изменил на
abstract class TestCase extends \PHPUnit_Extensions_Database_TestCase {
....
}
После этого я создал набор данных XML
<?xml version="1.0" ?>
<dataset>
<table name="a_table">
<column>id</column>
<column>data1</column>
<column>data2</column>
<row>
<value>1</value>
.....
.....
</row>
<row>
.....
</row>
</table>
</dataset>
Я использовал команду artisan convert migrations для создания схемы.
Тогда я написал свой первый тест.
class ImportantClassTest extends TestCase {
/**
* @author Me
*
*
* Tests the functionality of some function
* @dataProvider ImportantFunctionData();
*/
public function testthisImportantFunction($an_id,$an_amount,$another_amount,$starting_rows,$expected_rows)
{
$this->assertEquals($this->getConnection()->getRowCount('a_table'),$starting_rows);
$result = ImportantClass::ImportantFunction($an_id, $an_amount);
$this->assertEquals($another_amount,$result);
$this->assertEquals($this->getConnection()->getRowCount('a_table'),$expected_rows);
}
public function ImportantFunctionData()
{
return array(
array(1337,1000,180,10,10),
array(1338,3900,900,10,11)
);
}
public function getDataSet()
{
return $this->createXMLDataSet(dirname(__FILE__) . '/_files/ImportantFunctionData.xml');
} }
Я добавил config/testing/database.php:
return array(
'default' => 'sqlite',
'connections' => array(
'sqlite' => array(
'driver' => 'sqlite',
'database' => ':memory:',
'prefix' => '',
)
),
);
Когда я запускаю тест, происходит миграция для создания базы данных в памяти sqlite, но данные не заполняются. С проверкой строки я получаю эту ошибку:
1) ImportantClass::testthisImportantFunction с набором данных № 0 (1337, 1000, 180, 10, 10). PDOException: SQLSTATE[HY000]: общая ошибка: 1 нет такой таблицы: a_table
и только утверждение результата само по себе
1) ImportantClass::testthisImportantFunction с набором данных #0 (1337, 1000, 180, 10, 10) Не удалось утверждать, что 1000 соответствует ожидаемым 180.
Таким образом, ни в одном из случаев кажется, что phpunit правильно заполняет приборы.
Кто-нибудь может увидеть, где я иду не так?