簡體   English   中英

如何在PHPUnit中的測試之間共享fixture

[英]How to share fixtures between tests in PHPUnit

我正在進行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靜態,所以它只會被調用一次,但據我所知,靜態方法不能調用非靜態方法。 我對么? 如果是,那么我可以分享測試之間的夾具嗎?

你的意思是緩存數據“dom”? 嘗試這個:

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

     $this->dom = $dom;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM