2015-06-26 3 views
1

Я хочу протестировать пользовательский query_var, который я создал. Когда я запускаю сайт, query_var является правильным. Однако, когда я тестирую PHPUnit, кажется, что PHPUnit не видит query_var?Wordpress get_query_var с PHPUnit empty

Что я делаю следующее:

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

Спасибо за ваш комментарий, я взглянул на Бехата. Выглядит многообещающе, однако для этого конкретного случая я действительно хочу, чтобы он работал. У вас есть опыт в этом вопросе? –

ответ

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.

Ну, мне потребовались дни, чтобы понять.

Смежные вопросы