【发布时间】:2019-10-03 16:06:12
【问题描述】:
所有...我的主题说明了一切。我正在尝试做一个实际上故意使“foreach() 提供的参数无效”发生的测试。我试图让 PHPUnit expect 它,但是......不,我的测试仍然戛然而止。原因:“为 foreach() 提供的参数无效”正好在我告诉它它会发生的确切位置。
在我的文件顶部我有:
use PHPUnit\Framework\TestCase;
use PHPUnit\Framework\Error\Error;
use PHPUnit\Framework\Error\Notice;
use PHPUnit\Framework\Error\Warning;
我的班级声明以:
Class flirzelkwerpTest extends TestCase {
下面是测试文件中的几行:
// Let's try to add nothing.
// (It should throw an error because of "Invalid argument supplied for foreach()" in barabajagal.php.)
$this->expectException(\InvalidArgumentException::class);
$this->expectExceptionMessage('Invalid argument supplied for foreach()');
$resp = $barabajagal->add();
错误发生在最后一行。前两行不应该告诉 PHPUnit,“嘿,伙计,我希望这里有一个错误,这是你应该逐字收到的消息”??
我们正在使用 PHP 7.3.4 和 PHPUnit 8.3.2。
【问题讨论】:
-
不清楚你在问什么。测试期望
$resp = $barabajagal->add();抛出 InvalidArgumentException。你说的“急刹车”是什么意思?有错误吗?你期望会发生什么?没有足够的信息来调试问题所在。 -
PHPunit 返回错误。所有断言(但不包括)都发生了,我从 PHPunit 收到一条消息,说“有 1 个错误:1) flirzelkwerpTest::testAdd / 为 foreach() 提供的参数无效” --- 我认为期待一个错误的全部意义在于 PHPUnit 不会在它上面胡扯,不是吗?重点是我希望 PHPUnit 注意到该错误即将出现,期待它,并继续进行剩余的测试——它没有。我不知道您还需要什么其他信息。
-
我认为您可能启用了
--stop-on-failure、--stop-on-error等标志之一,请参阅phpunit.readthedocs.io/en/8.3/textui.html。另请参阅stopOnFailure、stopOnError等配置选项phpunit.readthedocs.io/en/8.3/configuration.html -
好电话——让我检查一下。谢谢!
-
您希望代码
$barabajagal->add();会发出警告,就像我提供的代码一样,但显然它并没有按照您的预期执行。测试没有问题。问题是:$barabajagal->add();。它没有做你期望它做的事情。 测试实际上在您的代码中发现了一个错误。
标签: phpunit invalidargumentexception