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

Я недавно установил 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()
{

}
}

2

Решение

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

Создав конфигурацию 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, пройдя через меню (Язык & Framework -> PHP -> PHPUnit) и в разделе Custom Autoloader выберите файл конфигурации по умолчанию и укажите его в файле phpxml. Если вы используете другой метод, перейдите в это меню и установите там конфигурацию по умолчанию.

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

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]