PHPUnit: проблема с тестированием базы данных - PullRequest
1 голос
/ 27 апреля 2011

Я новичок в тестировании баз данных с PhpUnit.Я начинаю с простого теста, который сравнивает содержимое таблицы PostgreSQL с файлом xml.

Проблема в том, что утверждение не работает должным образом:

Пожалуйста, посмотрите на результат:

http://www3.picturepush.com/photo/a/5540556/1024/Anonymous/Screenshot.png

Как видите, таблицы равны, но в содержимом таблицы БД (сначала на экране) есть лишние пробелы ...

Понятия не имеючто не так.

Вот код PHP:

public function testGetSourceData()
{
    include_once(
            sfConfig::get('sf_lib_dir')
            . '/task/ShopCategoryTreeUpdateTask.class.php'
    );

    $method = new ReflectionMethod(
      'ShopCategoryTreeUpdateTask', '_getSourceData'
    );

    $method->setAccessible(TRUE);

    $res = $method->invoke(new ShopCategoryTreeUpdateTask(new sfEventDispatcher, new sfFormatter),123);

    $actual = new PHPUnit_Extensions_Database_DataSet_QueryDataSet($this->getConnection());
    $actual->addTable('shop');

    $expected = $this->getDataSet();

    $this->assertDataSetsEqual(
        $actual,
        $expected
    );

}

, а здесь XML: http://pastebin.com/5MmtJDr6

Спасибо за любые цели!

1 Ответ

1 голос
/ 27 мая 2011

Думаю, вы слишком усложняете тест. В вашем методе вполне вероятно, что QueryDataSet и getDataSet отображают результат в строку по-разному.

Вы не должны на самом деле тестировать частные и публичные методы путем рефлексии, потому что они должны быть тестируемыми и доступными для ваших публичных методов. Если они недоступны публичным методам, то они никогда не будут вызваны. Ваш отчет о покрытии кода пригодится здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...