我正在进行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
设为静态,因此它只会被调用一次,但据我所知静态方法不能调用非静态方法。我对么?如果是,那么我可以分享测试之间的夹具吗?
答案 0 :(得分:1)
你的意思是缓存数据" dom"?试试这个:
public function setUp() {
static $dom;
if (!isset($dom)) {
$dom = $this->get_dom('/');
}
$this->dom = $dom;
}