PHP - Как я могу проверить этот класс? - PullRequest
0 голосов
/ 09 октября 2019

Я только начинаю работать с PHPUnit и пытаюсь протестировать определенные функции. Например, у меня есть следующий класс с загрузкой библиотеки DotEnv, и я хотел бы проверить следующие функции ...

  1. Проверка загрузки переменных
  2. Проверкаэто не так, если конфиг уже кэширован
  3. Тестирование выдает исключение, если отсутствует требуемая переменная

Но я борюсь с лучшим способом сделать это $app->configurationIsCached() управляется в другом месте, поэтому блокирует выполнение остальной части класса.

<?php declare(strict_types=1);

namespace Foundation\Bootstrap;

use Dotenv\Dotenv;
use Foundation\Core;

class LoadEnvironmentVariables
{


    /**
     * Any required variables.
     *
     * @var array
     */
    protected $required = [
        'APP_URL',
        'DB_NAME',
        'DB_USER',
        'DB_PASS',
        'DB_HOST'
    ];


    /**
     * Creates a new instance.
     *
     * @param Core $app The application instance.
     */
    public function __construct(Core $app)
    {

        // If the configuration is cached, then we don't need DotEnv.
        if ($app->configurationIsCached()) {
            return;
        }

        // Load the DotEnv instance
        $this->load($app->get('paths.base'));
    }


    /**
     * Loads the .env file at the given path
     *
     * @param string $filePath The path to the .env file
     * @return void
     */
    public function load(string $filePath)
    {
        $dotEnv = Dotenv::create($filePath);
        $dotEnv->safeLoad();
        $dotEnv->required($this->required);
    }
}

1 Ответ

1 голос
/ 09 октября 2019

Что касается вашего кода, связанного с $app->configurationIsCached():

Используйте что-то вроде Насмешка , чтобы создать макет вашего Core класса, которым выпередавая как $app в ваш класс. Затем вы можете смоделировать configurationIsCached(), заставив его вернуть все, что необходимо для маршрутизации вашего класса до досрочного возврата или вызова вашего load() метода.

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