PHPUnit中的单元测试-处理多个条件
我想使用PHPUnit编写一个测试,其中包括一个检查,以确保某个值是PHPUnit中的单元测试-处理多个条件,php,unit-testing,phpunit,logical-operators,Php,Unit Testing,Phpunit,Logical Operators,我想使用PHPUnit编写一个测试,其中包括一个检查,以确保某个值是字符串或NULL 好吧,我可以这样写一个测试: if (is_string($value) || is_null($value)) { $result = TRUE; } else { $result = FALSE; } $this->assertTrue($result); 然而,我已经看到PHPUnit有一个logicalOr()方法,我不知道是否应该使用它来进行更“本地”的测试?如果我
字符串
或NULL
好吧,我可以这样写一个测试:
if (is_string($value) || is_null($value)) {
$result = TRUE;
} else {
$result = FALSE;
}
$this->assertTrue($result);
然而,我已经看到PHPUnit有一个
logicalOr()
方法,我不知道是否应该使用它来进行更“本地”的测试?如果我应该使用它,我就不知道该怎么做…logicalOr
返回一个对象,该对象用于构建一个条件,该条件可以传递给assertThat
。我无法检查手机上的语法,但应该是这样的:
self::assertThat(self::logicalOr(self::stringValue(), self::nullValue()));
方法名称无疑是不正确的,因为我习惯于Hamcrest,但我认为结构是类似的。最好的方法是在出现问题时为您提供最有用的输出。在这种情况下,只要你知道哪里出了问题,我认为你这样做并不重要。以下代码将提供有意义的错误消息:
$message = '$value should have been either a string or null, but was actually a '
.gettype($value);
$this->asertTrue($valueIsEitherStringOrNull, $message);
使用phpunit v5.5,它(也)的工作方式如下:
if (is_string($value) || is_null($value)) {
$result = TRUE;
} else {
$result = FALSE;
}
$this->assertThat($value, $this->logicalOr(
$this->isType('string'),
$this->isNull()
));
你不能写
$result=is_string($value)| is_null($value)
?@lazyberezovsky是的,它可以写得更有效。但这并不是真正的问题——问题在于我是否应该用PHP进行测试,或者我是否可以/应该使用PHPUnitslogicalOr()
方法。我想建议您模拟这两种情况,并分别对它们进行断言。如果你遇到这样的情况,你应该考虑一下你的单元测试可能没有效果。