Я недавно установил 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()
{
}
}
Я наконец-то понял! По любой причине установка переменных среды тестирования в тесте не имела никакого эффекта.
Создав конфигурацию 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 в сочетании.
Других решений пока нет …