如何在PHPUnit中的测试之间共享fixture

时间:2015-07-14 04:58:10

标签: php wordpress performance unit-testing

我正在进行WordPress功能测试,因此我阅读HTML并使用Mastermind / HTML5来转换测试。但是,现在测试速度变慢,因为每次测试加载HTML文档大约需要1秒。我想分享测试之间的夹具,所以我不必为每个测试做解析。但我有一个约束,获取html的方法是在父类中,这是非静态方法

https://core.trac.wordpress.org/browser/trunk/tests/phpunit/includes/testcase.php?rev=32953#L328

我有什么选择来共享测试之间的夹具。

这是我的示例代码

class Testcase extends WP_UnitTestCase {

    public function setUp() {
        parent::setUp();
    }

    public function get_dom( $path ) {
        $html = $this->go_to( $path ); // I cannot change this method
        // do some html parsing and return DOM
    }

}

这是我的样本测试

class Testcase1 extends Testcase {
     public setUp(){
          $this->dom = $this->get_dom('/')
     }
     public test_1() {
     }

     public test_2() {
     }
}

我正在考虑将方法get_dom设为静态,因此它只会被调用一次,但据我所知静态方法不能调用非静态方法。我对么?如果是,那么我可以分享测试之间的夹具吗?

1 个答案:

答案 0 :(得分:1)

你的意思是缓存数据" dom"?试试这个:

public function setUp() {
     static $dom;
     if (!isset($dom)) {
         $dom = $this->get_dom('/');
     }

     $this->dom = $dom;
}