Продолжайте получать «Вы не можете сериализовать или десериализовать экземпляры PDO» в PHPUnit с использованием PHPStorm

1

Недавно я создал PHPUnit в PHPStorm через Composer.

Я пытаюсь проверить некоторые функции, которые требуют, чтобы я загружал Processwire (CMS).

Я постоянно получаю сообщение "Вы не можете сериализовать или несериализовать экземпляры PDO", несмотря на применение условий, ниже которых я исследовал, чтобы быть правильным способом устранения этой проблемы.

 * @backupGlobals disabled
 * @backupStaticAttributes disabled
 * @runTestsInSeparateProcesses
 * @runInSeparateProcess
 * @preserveGlobalState disabled

Есть ли что-то еще, что я пропустил или должен сделать, чтобы заставить это работать?

Это ресурсы, на которые я ссылался.

https://phpunit.de/manual/current/en/phpunit-book.html#appendixes.annotations.preserveGlobalState

http://edmondscommerce.github.io/php/phpunit-and-pdoexception-solution.html

Я видел эту статью, которая помешала мою статью как дубликат, но я не верю, что это одно и то же: PDOException: вы не можете сериализовать или нестиализировать экземпляры PDO

Тест в этой статье имеет прямые ссылки на объект PDO, тогда как я просто пытаюсь запустить мои тесты с помощью начальной загрузки для Processwire. Это мой тест, который я пытаюсь запустить:

namespace Test;

include_once(__DIR__."/../../../../index.php");     //Bootstrap to Processwire CMS

class ImageTest extends \PHPUnit_Framework_TestCase {

    /**
     * @backupGlobals disabled
     * @backupStaticAttributes disabled
     * @runTestsInSeparateProcesses
     * @runInSeparateProcess
     * @preserveGlobalState disabled
     */


    protected function setUp()
    {
        //$this->testpages = wire(pages)->find("template=fingergames|template=songs|template=poems");
    }

    public function testImageEmptyLinks()
    {
        //$testpages = wire(pages)->find("template=fingergames|template=songs|template=poems");

        $blanks = wire(pages)->find("image=''");
        $this->assertEquals($blanks->count(),0);
    }

    public function testImageMismatchedLinks()
    {
        //$this->assertTrue(true);
        $this->assertEquals(0,0);
    }

    public function testImageMissingSiblings()
    {
        $this->assertEquals(0,0);
    }

    protected function tearDown()
    {

    }
}
Теги:
pdo
phpunit
processwire

1 ответ

3

Я наконец-то понял! По какой-то причине установка переменных тестовой среды в тесте не имела никакого эффекта.

Создав конфигурацию phpunit.xml, определив параметры теста и создав ссылку на нее в Phpstorm, я наконец смог запустить тест.

Для справки, это было содержимое моего phpunit.xml

<phpunit
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/4.5/phpunit.xsd"
        backupGlobals="false"
        backupStaticAttributes="false"
        processIsolation="false">
</phpunit>

Я не думаю, что это важно, где находится файл, но я поместил его в тестовую папку, где находятся мои тесты.

И мне пришлось ссылаться на него в PHPStorm, пройдя через меню (Language & Framework → PHP → PHPUnit) и в разделе Custom Autoloader, выбрав файл конфигурации по умолчанию и указав его в файл phpxml. Если вы используете другой метод, перейдите в это меню и установите для него конфигурацию по умолчанию.

Надеюсь, это поможет кому-то, потому что не так много информации, связанной с PHPUnit & PHPStorm.

  • 0
    Я написал несколько статей здесь, которые идут более подробно. Наслаждаться. processwire.com/talk/topic/...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню