3

我想使用 PHPUnit 编写一个测试,其中包括检查以确保值是 astring NULL.

AFAIK,我可以像这样编写这样的测试:

if (is_string($value) || is_null($value)) { 
    $result = TRUE; 
} else { 
    $result = FALSE; 
} 

$this->assertTrue($result);

但是,我已经看到 PHPUnit 有一个logicalOr()方法,我不知道我是否应该使用它来进行更“原生”的测试?如果我应该使用它,我不知道该怎么做......

4

3 回答 3

5

使用 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()
));
于 2016-08-23T08:30:34.163 回答
0

最好的方法是在出现问题时为您提供最有用的输出。在这种情况下,只要您知道出了什么问题,我认为您采用哪种方式并不重要。以下代码将提供有意义的错误消息:

$message = '$value should have been either a string or null, but was actually a '
           .gettype($value);
$this->asertTrue($valueIsEitherStringOrNull, $message);
于 2012-07-30T17:02:53.493 回答
0

logicalOr返回一个对象,该对象用于构建可以传递给 的条件assertThat。我无法检查手机上的语法,但它应该看起来像这样:

self::assertThat(self::logicalOr(self::stringValue(), self::nullValue()));

方法名称无疑是不正确的,因为我习惯于 Hamcrest,但我的结构是相似的。

于 2012-07-30T16:47:55.607 回答