PHPUnit声明两种可能结果之一

Ste*_* E. 4 php phpunit unit-testing

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

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

问题是。PHP单元中是否有一个断言可以说,错误必须是两个可能结果之一?就像是:

assertIsIn(array(E_WARNING, E_USER_WARNING), $generatedError);
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过在assertContains()中交换期望的答案和实际答案或可能对结果进行一些预声明的操作来解决此问题。但是,有没有更清洁的方法?

Mat*_*teo 5

可能可以使用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);
}
Run Code Online (Sandbox Code Playgroud)

希望有帮助