继续使用PHPStorm

时间:2015-12-11 14:23:34

标签: php pdo phpunit processwire

我最近通过Composer在PHPStorm中设置了PHPUnit。

我正在尝试测试一些需要我引导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: You cannot serialize or unserialize PDO instances

该文章中的测试直接引用了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()
    {

    }
}

1 个答案:

答案 0 :(得分:4)

我终于明白了!无论出于何种原因,在测试中设置测试环境变量都没有效果。

通过创建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>

我认为放置文件的位置并不重要,但我把它放在我的测试所在的测试文件夹中。

我必须通过浏览菜单(Language&amp; Framework - &gt; PHP - &gt; PHPUnit)在PHPStorm中引用它,然后在Custom Autoloader部分中选择默认配置文件并将其指向phpxml文件。如果您使用的是其他方法,请转到该菜单并在那里设置默认配置。

希望这可以帮助那些人,因为没有太多关于PHPUnit&amp; amp; PHPStorm结合在一起。