include_once в PHPUnit не включает функции - PullRequest
1 голос
/ 08 января 2020

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

Я могу использовать классы, которые пишу эффективно, через тестовые классы, которые я ' Однако, когда я пытаюсь использовать include_once или require_once в тестовом файле, чтобы ввести некоторые функции, которые не являются методами класса, тестовый файл не распознает функцию.

Для Например, вот и пример тестового класса, который я написал: test-eng. php

function engage() {
    return "Engage";
}

А вот файл с функцией, которую я пытался импортировать: eng. php

class Test_Enagage extends WP_UnitTestCase {

    public function test_engage() {
        $test_url = getcwd() . "/engage.php";
        include_once($test_url);
        echo engage();
    }
}

Я также пытался импортировать файл eng. php вверху файла перед объявлением класса как показано ниже: test-eng. php

$test_url = getcwd() . "/engage.php";
        include_once($test_url);
class Test_Enagage extends WP_UnitTestCase {

    public function test_engage() {

        echo engage();
    }
}

Но в любом случае я получаю ошибку в консоли, когда запускаю phpunit:

Произошла 1 ошибка:

1) Test_Enagage :: test_engage Ошибка: вызов неопределенной функции включается ()

Так что это не Признавая, что эта функция даже существует.

Опять же, я могу создать тестовый класс в этом файле, который имеет метод eng, например:

class Engage {
public function engage() {
    echo "Engage";
}
}

, и тестовый файл вызывает класс и Метод без проблем и тесты пройдены.

Вот моя структура папок:

plugins
-myplugin
--engage.php
--tests
---test-engage.php

и функция getcwd() возвращает путь к myplugin (проверяется простым оператором echo в верхней части test-engage.php файла)

У кого-нибудь есть какие-либо советы о том, что здесь может пойти не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...