【问题标题】:PHPUnit not catching exceptionPHPUnit没有捕捉到异常
【发布时间】:2018-01-03 14:20:39
【问题描述】:

寻求一些帮助以编写更好的代码/测试,但似乎马上就偶然发现了一个问题 - 任何帮助将不胜感激。

脚本:

$feed = 'App\Http\Services\Supplier\Feeds\\' . ucwords($feedName) . "Feed";

if (class_exists($feed)) {
    return new $feed($headerRowToSkip);
} else {
    throw new Exception("Invalid feed type given.");
}

测试:

 public function testBuild()
{
    SupplierFeedFactory::build('MusicMagpie', 1);
    $this->expectExceptionMessage("Invalid feed type given.");
}

错误:

有 1 次失败:

1) Tests\Feature\Account\Supplier\Feeds\SupplierFeedFactoryTest::testBuild 断言抛出“Exception”类型的异常失败。

【问题讨论】:

  • 在测试代码之前必须表达期望。否则,它们毫无用处。就像你在雨停后买伞一样。在您的情况下,调用 $this->expectExceptionMessage() 的行没有运行,因为(还有什么?)测试代码 (SupplierFeedFactory::build()) 引发了异常。

标签: exception-handling phpunit


【解决方案1】:

PHPUnit 方法是字面的,EXPECTexception,所以你所要做的就是在异常实际发生之前放置它。

public function testBuild()
{
    $this->expectException('Exception');
    $this->expectExceptionMessage("Invalid feed type given.");
    SupplierFeedFactory::build('MusicMagpie', 1);
}

【讨论】:

猜你喜欢
  • 2011-05-08
  • 1970-01-01
  • 1970-01-01
  • 2011-11-17
  • 1970-01-01
  • 2015-11-21
  • 2016-02-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多