Перемешивание кеша конфигурации Laravel - PullRequest
0 голосов
/ 20 декабря 2018

Я пишу новую команду ремесленника, которую не хочу запускать, если конфигурация кэширована (через config:cache):

class NewCommand extends Command
{
    public function handle()
    {
        if (app()->configurationIsCached())
        {
            $this->error('Configuration is cached.  Unable to run command');
            return 1;
        }
    }
}

Я пытаюсь написать модульный тест, чтобы покрыть это,однако это терпит неудачу:

public function test_command_not_run_if_config_cached()
{
    App::shouldReceive('configurationIsCached')
        ->once()
        ->andReturn(true);

    $this->artisan('new:command')
        ->expectsOutput('Configuration is cached.  Unable to run command');
        ->assertExitCode(1);
}

результат: Method configurationIsCached() from Mockery_0_Illuminate_Foundation_Application should be called exactly 1 times but called 0 times

Есть ли другой способ посмеяться над тем, что конфигурация кэшируется в модульном тесте?

1 Ответ

0 голосов
/ 21 декабря 2018

Оказывается, что configurationIsCached() доступно на фасаде App.В настоящее время это не задокументировано, но обновление функции дескриптора в команде до

public function handle()
{
    if (App::configurationIsCached())
    {
        $this->error('Configuration is cached.  Unable to run command');
        return 1;
    }
}

позволяет пройти тест.Спасибо @Namosheck за указание на это

...