Модульное тестирование - PullRequest
0 голосов
/ 10 января 2020

Я хочу выполнить модульные тесты в классе, моя цель: я хочу проверить, активирован ли плагин, с помощью функции: is_plugin_active

class WC_Custom_Variable_Products_Dependencies {
    public function __construct() {
          add_action( 'admin_init', [$this, 'check_environment']);
    }
    public function check_environment(){
          return is_plugin_active( 
                    'woocommerce-custom-variable-products/woocommerce-custom-variable-products.php' 
                 );
    }
}

CLass de test:

require_once 'class-wc-custom-variable-products-dependencies.php';
class WC_Custom_Variable_Products_DependenciesTest extends WP_UnitTestCase {

    public function setUp() {
        parent::setUp();

        $this->class_instance = new WC_Custom_Variable_Products_Dependencies();
    }

    public function test_check_environment(){

        $result = $this->class_instance->check_environment();
        $this->assertTrue($result);
    }

Утверждение возвращает всегда False.

Мой плагин активирован, а функция is_plugin_active возвращает True, если я выполняю его из браузера:

add_action('admin_init', function(){

     var_dump(is_plugin_active( 
                        'woocommerce-custom-variable-products/woocommerce-custom-variable-products.php' 
    ));
});

Я думаю, что admin_init крюк не выполняется в тесте. это правда или нет?

1 Ответ

0 голосов
/ 10 января 2020

Я узнал почему. Вот решение: вы должны активировать плагин в файле tests / bootstrap.php:

$GLOBALS[ 'wp_tests_options' ] = array(
        'active_plugins' => array(
                'YOUR-PLUGIN/YOUR-PLUGIN.php'
        )
)
...