【发布时间】:2017-07-10 20:13:25
【问题描述】:
我有一个这样的例子,它基于 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 注释或其他东西忽略它?
干杯。
【问题讨论】:
标签: php unit-testing phpunit code-coverage