Laravel тестирование миграции загрязняет утверждения - PullRequest
0 голосов
/ 29 февраля 2020

При написании тестов для моего пакета Laravel я наткнулся на что-то странное. Мои пустые тесты проходили вместо помеченных как «Рискованные».

Дальнейшие исследования привели меня к классу PendingCommand, который имеет метод run(), который делает утверждение в коде выхода команды. Это PendingCommand было создано путем вызова $this->astisan('migrate:fresh')->run(). Мне удалось пропустить это утверждение, вызвав assertExitCode(null) перед выполнением команды. Это сработало, но все еще происходит утверждение.

Кто-нибудь имел эту проблему раньше и / или мог предотвратить утверждение до того, как будет выполнен фактический тест?

Было бы приятно увидеть какие утверждения делаются, но я не смог этого найти. Единственное, что я смог найти, это то, что класс Assert хранит $count всех сделанных утверждений, а не какое.

Я продолжу поиск решения и опубликую мои выводы на этот вопрос.

1 Ответ

0 голосов
/ 29 февраля 2020

Обнаружено, что InteractsWithConsole имеет метод withoutMockingConsoleOutput, который предотвратит создание макета с утверждениями.

Окончательный код:

$this->withoutMockingConsoleOutput()
    ->artisan('migrate:fresh');
...