2015-06-26 52 views
1

我想測試一個我創建的自定義query_var。當我運行網站時,query_var是正確的。但是,當我使用PHPUnit進行測試時,似乎PHPUnit沒有看到query_var?Wordpress get_query_var與PHPUnit空

我做的是以下幾點:

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;

你是如何做到這一點的?

+0

我想我對你有個壞消息。儘管很受歡迎WordPress的代碼是相當混亂,它很難編寫它的單元測試,因爲很多外部依賴,只是很難隔離測試代碼。 我會建議像behat和直接測試網站和它的功能。 –

+0

感謝您的評論,我看了Behat。看起來很有希望,但是對於這種特殊情況,我真的希望它能夠工作。你有這個問題的經驗嗎? –

回答

0

我發現線索在哪裏。看看這個StackOverflow帖子:https://wordpress.stackexchange.com/questions/71406/is-there-a-flowchart-for-wordpress-loading-sequence特別是流程圖和動作序列。

我發現在測試中我必須設置query_var與set_query_var('category', 'cars'); 所以我可以測試它。

在我的類別類中,我將它初始化爲template_redirect,以便實例化$ wp_query。在$ wp_query中可以訪問query_vars。現在,該課程在撥打電話時不會發生錯誤:get_query_var

哎,那花了我幾天的時間才搞明白..