У меня есть пример, как это, который основан на генераторе ключа Laravel:Как проверить что-то подобное?
public function generateRandomKey(): string
{
$generatedKey = base64_encode(random_bytes(16));
// Encrypt the generated key with our public key so it is not a 'plain password' anymore.
$value = openssl_public_encrypt($generatedKey, $crypted, $this->getPublicKey());
if (!$value) {
throw new \RuntimeException('Encryption failed: could not generate a random key.');
}
return base64_encode($crypted);
}
Я хотел бы юнит тестов это и я могу, рассчитывать на мою RuntimeException
. Я хотел бы иметь покрытие на 100% кода, но я также не хочу, чтобы сценарий просто получил 100% -ный охват кода.
В этом примере я бы хотел, чтобы PHPUnit тоже ударил. Я не могу предоставить неправильный ключ, потому что мой getPublicKey()
является закрытым и будет вызывать ошибку, прежде чем я получу ошибку в этом методе.
Ошибки дешифрования запуска не так уж трудны, так как я могу просто указать случайное значение, которое не было должным образом зашифровано.
Итак, как бы я мог протестировать такой сценарий и добиться покрытия 100% кода. Возможно ли это или даже разумно протестировать что-то подобное или я должен проигнорировать его с помощью комментария PHPUnit или чего-то еще?
Cheers.
Кстати - если ваш getPrivateKey делает его собственная проверка и бросает свое исключение вам нужно частично издеваться так, это не в вашем тесте для generateRandomKey –