PHPUnit Assert 两种可能结果之一

标签 php unit-testing phpunit

我正在编写单元测试来验证两个库的功能是否相同。本质上,测试接口(interface)。

但是,在一些与错误处理相关的测试中。错误级别不同,必须不同,因为例如一个生成 E_WARNING,另一个只能生成 E_USER_WARNING。

那么问题来了。 PHP 单元中是否有一个断言可以说错误必须是两个可能结果之一?像这样的东西:

assertIsIn(array(E_WARNING, E_USER_WARNING), $generatedError);

我知道我可以通过在 assertContains() 中交换预期答案和实际答案或者可能对结果进行一些预断言操作来解决这个问题。然而,有更清洁的方法吗?

最佳答案

也许你可以用 assertContains 来实现方法(断言干草堆中包含一根针)。例如:

public function testAssertIsIn()
{
    $errorLevel = array(E_WARNING, E_USER_WARNING);

    $generatedError = E_WARNING;
    $this->assertContains($generatedError, $errorLevel);

    $generatedError = E_USER_WARNING;
    $this->assertContains($generatedError, $errorLevel);
}

希望对你有帮助

关于PHPUnit Assert 两种可能结果之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40538902/

相关文章:

php - MYSQL 的 BETWEEN 日期的 SQL 查询不包括指定范围?

java - 如何使用 TestNG 测试 expectedExceptionsMessageRegExp(异常消息)?

PHPUnit 安装到 CakePHP - 没有 Autoload.php

php - CakePHP测试: Cannot modify header information - headers already sent by

php - "=>"在 PHP 中是什么意思?

php - 如何在不重新启动 sphinx 搜索服务的情况下创建索引

php - 如何将两个表格行放在一起

java - Jersey-test-framework 无用的回溯 JerseyTest

unit-testing - 推荐好的 TDD 在线示例演练?

database - 我如何开始使用 PHPUnit,其中我的类构造需要预配置的数据库连接?