Я только что начал изучать PHPUnit с помощью Wordpress. У меня есть плагин, который получает данные петиции с сайта change.org. Одна из функций класса администратора проверяет параметры из области администрирования Wordpress, а также вызывает `check_admin_referer() как часть этой проверки.Как вы можете PHPUnit проверить функцию Wordpress, содержащую check_admin_referer()?
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 проходит, если я закомментировать check_admin_referer()
, но я не могу заставить его пройти, если нет.
public function testValidateSettings() {
$this->assertTrue($this->plugin_admin->sc_validate_settings());
}
Я попытался установить случайное слово, действие и _wp_http_referer вручную и с помощью wp_nonce_field()
через $_POST
в тестах/bootstrap.php и в самом тестовом классе. И я немного читал о макетных объектах/методах, но не совсем понимаю, как они могут быть использованы в этом случае.
Возможно, я полностью не понимаю, как все это работает, но любая помощь будет принята с благодарностью!
Привет @ андрей-tserkus, спасибо, что нашли время, чтобы обеспечить детальный ответ и контекст. Это сработало! Мне нужно было передать имя плагина как строку с жестким кодом, как вы предложили. Хороший совет включить в setUp() тоже для красивости! Еще раз спасибо - я буду готовиться к будущим боям с WP-кодом! –
Рад, что это помогло, @EdPatrick –
Спасибо, @AndreyTserkus. Этот ответ помог мне и самому. Я не мог получить аспект $ _REQUEST, но обнаружил, что если я установил текущего пользователя, 'wp_verify_nonce' будет работать. Написал короткую почту, которая может помочь другим тестировать WordPress. [wp_verify_nonce и PHPUnit] (http://jhtechservices.com/wp_verify_nonce-and-phpunit-testing/) – jer0dh