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