我剛開始用Wordpress學習PHPUnit。我有一個從change.org獲取請願數據的插件。其中一個管理類功能驗證Wordpress管理區域的設置,並在此驗證中調用`check_admin_referer()。如果我註釋掉check_admin_referer()
,但我不能讓它通過,如果不PHPUnit如何測試一個包含check_admin_referer()的Wordpress函數?
public function sc_validate_settings() {
//check nonce field is valid
check_admin_referer($this->plugin_name, 'security');
//get new settings
$settings = $this->sc_clean_new_settings();
//validate url
$valid_url = $this->sc_validate_url($settings['petition_url']);
//validate api_key
$valid_api_key = $this->sc_validate_api_key($settings['petition_api_key']);
if ($valid_url && $valid_api_key) {
$this->clean_settings = $settings;
return true;
}
return false;
}
這PHPUnit的測試通過。
public function testValidateSettings() {
$this->assertTrue($this->plugin_admin->sc_validate_settings());
}
我試圖通過$_POST
在測試/ bootstrap.php中,並在測試類的手動和通過wp_nonce_field()
設置一個隨機數,動作和_wp_http_referer。我已經閱讀了一些關於模擬對象/方法的內容,但並不完全瞭解在這種情況下如何使用它們。
我可能完全誤解了所有這些工作,但任何幫助將不勝感激!
喜@安德烈 - tserkus,感謝您抽出寶貴的時間提供了詳盡的解答和上下文準備。有效!我需要按照您的建議將插件名稱作爲硬編碼字符串傳遞。好的提示也包含在setUp()中,以便可愛!再次感謝 - 我將準備與WP代碼的未來戰鬥! –
很高興幫助,@EdPatrick –
謝謝,@AndreyTserkus。這個答案也對我最有幫助。我無法得到$ _REQUEST方面的工作,但發現如果我設置當前用戶,'wp_verify_nonce'可以工作。寫了一篇短文,可能會幫助其他人測試WordPress。 [wp_verify_nonce和PHPUnit](http://jhtechservices.com/wp_verify_nonce-and-phpunit-testing/) – jer0dh