eclipse — Simpletest — Как проверить «включенные» классы

Я пытаюсь написать тест на изменения кода для плагина WordPress.

<?php
require_once('.\simpletest\autorun.php');
require_once('.\wp-content\plugins\appointment-booking\includes.php');
// The line above causes [No runnable test cases in...] problem.
// In my actual code, I have absolute path and I've made sure that the path is correct.

class test extends UnitTestCase
{
function test_pass()
{
$this->assertFalse(false);
}
}
?>

Пожалуйста, помогите мне понять, почему и как исправить.
Как указано в комментарии, второй require_once вызывает ошибку [Нет запускаемых тестовых примеров в …]

Например:

Bad TestSuite [test.php] with error [No runnable test cases in [test.php]]

Я ожидаю не видеть ошибку Bad TestSuite. Я ожидаю, что он сможет запустить тест, как он может это сделать, когда второй require_once закомментирован.

Я вижу эту проблему, описанную здесь: PHP — Simpletest — Как проверить "включены" классы, но я не понимаю проблему, или как исправить. Спасибо.

Так как я не мог получить этот вопрос из статуса «на удержании», и не мог найти способ ответить на вопрос. Вместо этого я пишу решение здесь.

get_home_path () из ответа Винсента помогло мне найти причину, поэтому я пометил его как ответ, хотя это не совсем технически. Когда я пытался использовать его в своем коде, я не мог — имя функции, ABSPATH и т. Д. Не были определены. Причина в том, что он не считался частью WordPress.

Дальнейший поиск найден https://stackoverflow.com/a/27514259/5885721
И отладка увидела, что файл WordPress, который я хотел включить, имел этот код

<?php if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly

Поэтому, когда была запущена функция require, она остановила все, и никаких тестов не было найдено. Чтобы исправить, добавьте

require( dirname( __FILE__ ) . '/wp-blog-header.php' );

вместо второго require_once и ABSPATH будут установлены правильно, и я могу использовать WordPress API и код плагина и писать контрольные примеры.

-1

Решение

Использовать абсолютный путь опасно. Ты можешь использовать :

require_once(get_home_path() .'wp-content\plugins\appointment-booking\includes.php');

(если вы находитесь в среде Windows)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]