Я учусь писать плагин в Wordpress и хочу проверить, как плагин ведет себя, когда он активирован.Я использую Codeception / Wp-Browser в качестве структуры TDD.Я намерен написать приемочный тест с использованием модуля WpWebDriver с Chrome.
Проблема заключается в том, что написанные мной тесты мешают друг другу.По этой причине мне нужно сбросить состояние плагина перед каждым тестом, но я не знаю, как это сделать.
Перед каждым тестом мне нужно:
- проверить, активен ли плагин
- , если он есть, затем отключить его
- , если он естьнет, то ничего не делать
Я знаю, что могу использовать метод _before
внутри класса Cest.Вот мой код:
<?php
class activationCest
{
public function _before(AcceptanceTester $I)
{
// what to do here???
}
public function _after(AcceptanceTester $I)
{
}
// tests
public function activationCaseFailPHP(AcceptanceTester $I)
{
$I->wantTo('see an error message if the PHP version
is not compatible with the plugin');
$I->loginAsAdmin();
$I->amOnPluginsPage();
$I->activatePlugin('testwidget');
$I->see('Your PHP version is outdated.
Testwidget requires a PHP version equal or superior
to 7.0. Contact your hosting provider about
how to update PHP');
}
public function activationCaseFailWP(AcceptanceTester $I)
{
$I->wantTo('see an error message if the Wordpress version
is not compatible with the plugin');
$I->loginAsAdmin();
$I->amOnPluginsPage();
$I->activatePlugin('testwidget');
$I->see('Your Wordpress version is outdated.
Testwidget requires a Wordpress version equal
or superior to 5.0. Contact your hosting provider
about how to update Wordpress');
}
public function activationCaseSuccess(AcceptanceTester $I)
{
$I->wantTo('see a success message if the PHP and Wordpress versions are
compatible with the plugin');
$I->loginAsAdmin();
$I->amOnPluginsPage();
$I->activatePlugin('testwidget');
$I->see('Selected plugins activated', '#message');
}
}
Наивно, я пробовал это
public function _before(AcceptanceTester $I)
{
if (is_plugin_active('testwidget')) {
$I->deactivatePlugin('testwidget');
}
}
Конечно, это не сработало.Программа выдала ошибку: [Error] Call to undefined function is_plugin_active()
, потому что функция Wordpress is_plugin_active не находится в области действия.
Документация Codeception гласит: условные утверждения - этоесть методы типа canSeeElement
или cantSeeElement
, используемые для проверки того, что элемент находится на странице и не остановит проверку, если они не пройдут.Кажется, что-то похожее для действий Codeception, как вы можете видеть здесь .
Я не знаю, могут ли эти пошаговые декораторы быть решением, потому что я не совсем понимаю, каккак они работают и как я могу их настроить.
Как вы думаете, что является самым простым решением в этом вопросе?Как бы вы решили это, если бы вы были на моем месте?