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 правильно заполняет приборы.

Кто-нибудь может увидеть, где я иду не так?

0 ответов

Другие вопросы по тегам