PHPUnit: как использовать утверждения вне методов "test ..."? - PullRequest
0 голосов
/ 17 июня 2020

У меня есть следующий код:

private function registerShutdownFunction(): void
{
    register_shutdown_function(function () {
        $this->dropDatabasesAndUsersIfExist();
    });
}

И этот код:

private function dropDatabasesAndUsersIfExist(): void
{
    // some code for deletion of the databases...

    foreach ($connections as $connection) {
        $this->assertNotContains($connection, $databases);
    }
}

Но dropDatabasesAndUsersIfExist не является методом «проверки ...». И phpunit игнорирует утверждения вне методов тестирования.

И, похоже, могут возникнуть проблемы, потому что эта функция shutdown работает непосредственно перед d ie скрипта ...

1 Ответ

1 голос
/ 04 июля 2020

Вы можете использовать класс Assert PHPUnit вне тестовых примеров, если это действительно то, что вы хотите сделать:

PHPUnit\Framework\Assert::assertNotContains($connection, $databases);

Изменить: Прочитав ваш вопрос еще раз, я не совсем уверен, что мой ответ помогает вам. Если я вас понял, вы уже используете утверждение, но оно не работает так, как вы ожидали. Я предполагаю, что вы хотите, чтобы весь тестовый прогон провалился, если какое-либо из утверждений в dropDatabasesAndUsersIfExist не было выполнено.

Одним из решений может быть перенос проверок, которые вы выполняете в dropDatabasesAndUsersIfExist, в отдельный тест. класс, который должен выполняться последним. Вы можете добиться этого, добавив еще один набор тестов с новым классом сразу после набора тестов.

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