gpt4 book ai didi

unit-testing - catch block 中的 PHPUnit 测试代码

转载 作者:行者123 更新时间:2023-11-28 19:59:59 24 4
gpt4 key购买 nike

我有一个使用 try...catch 的 Symfony Controller 。我使用 phpunit 来测试我的应用程序。我已经搜索过但还没有找到一种方法来测试捕获异常中的代码。我如何强制 php 单元假装出现问题并进入 catch block 并对此进行测试?

即:

 try {
$foo = 1;
} catch (\Exception $ex) {
$mail = new Mail();
$mail->sendMail();
return new Response();
}

我如何告诉 phpunit 抛出一个\Exception 以便它测试上面 catch block 中的代码?

最佳答案

好吧,在那些条件下,它显然不会抛出任何异常,但请考虑您的 try/catch 所在的函数。您需要对该函数进行单元测试,并提供会导致其失败并捕获的参数。

例如:

public function doStuff($argument) {
try {
$parsed = (int)$argument; //but what if $argument is a string with letters
} catch (\Exception $ex) {
//do stuff
}

测试当你搞砸它时是否抛出异常:

public function testDoStuff() {
// get a mock of the class, let's just call it $mock
// do some regular asserts if you want

$this->setExpectedException('\Exception');
$mock->doStuff("haha, you can't parse this");
}

关于unit-testing - catch block 中的 PHPUnit 测试代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37039891/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com