PHPUnit 为空的 Wordpress get_query_var

Wordpress get_query_var with PHPUnit empty

我想测试我创建的自定义 query_var。当我 运行 网站时 query_var 是正确的。但是,当我使用 PHPUnit 进行测试时,PHPUnit 似乎没有看到 query_var?

我的做法是:

public function test_correct_category_name() {

    $this->go_to('/category/cars');
    $category_name = get_query_var( 'category' );

    $this->assertEquals( $category_name, 'cars');
}

同样,这在打开网站并输出 echo get_query_var( 'category' ); 时非常有效,然后显示 cars;

你是怎么做到的?

找到线索了。看看这个 Whosebug post: https://wordpress.stackexchange.com/questions/71406/is-there-a-flowchart-for-wordpress-loading-sequence 特别是上面有动作序列的流程图。

我发现在测试中我必须将 query_var 设置为 set_query_var( 'category', 'cars' ); 所以我可以测试一下。

在我的类别 class 中,我在 template_redirect 上初始化它,以便实例化 $wp_query。在 $wp_query 中可以访问 query_var。现在 class 在调用时不会报错:get_query_var.

哇,我花了好几天才弄明白..