2015-10-13 2 views
1

Я подозреваю, что это будет дублированный вопрос или что-то с очень простым ответом, но я искал каждый термин, который я могу придумать без каких-либо результатов.WordPress плагин phpunit тесты с зависимостями

Это действительно просто; Как я могу модулировать плагины WordPress, которые зависят от других плагинов?

В настоящее время я работаю над плагином WooCommerce, который будет содержать платежный шлюз, который должен расширить , включенный в плагин WooCommerce. Поэтому мне нужен WordPress для загрузки и активации WooCommerce. Я пытался;

  1. с использованием только /plugins/woocommerce/woocommerce.php. Дает мне db-ошибки, поскольку таблицы WooCommerce не были созданы.
  2. activate_plugin('<woocommerce plugin path>');"muplugins_loaded" действие. Дает ту же ошибку, что и выше.
  3. Клонирование WooCommerce разработчик. репо и включая test/bootstrap.php в woocommerce. Дает мне фатальную ошибку PHP: wp-content/plugins/woocommerce/tmp/wordpress-tests-lib/includes/functions.php): failed to open stream: No such file or directory in /home/...
  4. Запуск /plugins/woocommerce/tests/bin/install.sh. Дает мне PHP Fatal error: Cannot redeclare tests_add_filter() (previously declared in ...
  5. Комбинации вышеперечисленного

Кто-нибудь знает, что я делаю неправильно? Я действительно не хочу бросать модульные тесты, но в настоящее время кажется единственным вариантом, так как я становлюсь фатальным b/c некоторыми классами в моем плагине. Тип вводит подсказку о платежном шлюзе, который явно заставляет автозагрузчик его получить.

Спасибо заранее :)

ответ

1

я в конечном итоге создание «подстановки зависимостей» (макет) классов в специальной папке, которая только зарегистрировано на автозагрузчик в тестовой среде (не устр/тычка для предотвращения столкновений с реальные классы).

Я думаю, что это действительно уродливое решение, так как тесты пройдут, даже если api, что мы зависим от изменений и разрывает приложение, ломает всю цель выполнения модульных тестов imo. Но вы знаете .. Все в порядке и в любви lol

+0

Быстро и грязно, вы можете включить wp-load.php и с правильными конфигурационными vars, которые вы золотые. Для простого тестирования я бы посмотрел на wp-cli, чтобы загрузить активирующие плагины для тестового сценария. – buley

0

Я просто потратил часы, пытаясь понять это, и попал туда в конце концов. Оставляя этот ответ здесь для всех, кто смотрит.

Это руководство объясняет процесс довольно хорошо: https://wptheming.com/2016/01/unit-tests-for-woocommerce-extensions/

В принципе вы можете скопировать весь тестовый WooCommerce пакет в папку расширения и сделать несколько корректировок инициализации в файле загрузки, так что вы загрузите WooCommerce и ваше расширение вместе.

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