Tôi vừa bắt đầu học PHPUnit với Wordpress. Tôi có một plugin nhận dữ liệu kiến nghị từ change.org. Một trong các hàm lớp quản trị xác nhận các thiết lập từ một khu vực quản trị Wordpress và cũng gọi `check_admin_referer() như là một phần của việc xác thực này.Làm cách nào để PHPUnit kiểm tra hàm Wordpress có chứa 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;
}
Kiểm tra PHPUnit này vượt qua nếu tôi nhận xét check_admin_referer()
nhưng tôi không thể chuyển qua nếu không.
public function testValidateSettings() {
$this->assertTrue($this->plugin_admin->sc_validate_settings());
}
Tôi đã cố gắng thiết lập một nonce, hành động và _wp_http_referer bằng tay và thông qua wp_nonce_field()
qua $_POST
trong các thử nghiệm/bootstrap.php và trong lớp thử nghiệm bản thân. Và tôi đã đọc một chút về các đối tượng giả/phương pháp nhưng không hoàn toàn nhìn thấy cách chúng có thể được sử dụng trong trường hợp này.
Tôi có thể hoàn toàn hiểu nhầm cách thức hoạt động của mọi việc nhưng mọi trợ giúp sẽ được đánh giá cao!
Hi @ Andrey-tserkus, cảm ơn đã dành thời gian để cung cấp một câu trả lời chi tiết và bối cảnh. Nó đã làm việc! Tôi cần phải chuyển tên plugin dưới dạng chuỗi được mã cứng như bạn đã đề xuất. Lời khuyên tốt để bao gồm trong setUp() quá cho prettiness! Cảm ơn một lần nữa - Tôi sẽ chuẩn bị cho chiến đấu trong tương lai với mã WP! –
Vui khi được trợ giúp, @EdPatrick –
Cảm ơn, @AndreyTserkus. Câu trả lời này cũng giúp ích nhiều nhất cho tôi. Tôi không thể có được khía cạnh $ _REQUEST để làm việc nhưng được phát hiện nếu tôi đặt người dùng hiện tại, 'wp_verify_nonce' sẽ hoạt động. Đã viết một bài đăng ngắn có thể giúp những người khác thử nghiệm WordPress. [wp_verify_nonce và PHPUnit] (http://jhtechservices.com/wp_verify_nonce-and-phpunit-testing/) – jer0dh