3

値が astring または NULLであることを確認するチェックを含む PHPUnit を使用してテストを作成したいと考えています。

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 に答える