Michael Arrison
Michael Arrison

Reputation: 1553

phpunit assert contains two possibilities

How do I ask PHPUnit to assert that a long string contains one of two possible options? Either result should assert true. Something like this?

$multi_kilobyte_string = "lorem ipsum...";
$option1 = "dolor";
$option2 = "amet";
$this->assertContains([$option1, $option2], $multi_kilobyte_string);

Upvotes: 2

Views: 1235

Answers (2)

You've used the correct function but in wrong order of parameters:

    public function testContainsThisOrThat()
    {
        $multi_kilobyte_string = "lorem ipsum...";
        $option1 = "dolor";
        $option2 = "amet";
        $this->assertContains($multi_kilobyte_string, [$option1, $option2]);
    }

Upvotes: 0

axiac
axiac

Reputation: 72336

The solution of this problem is simple (but not quite documented):

public function testContainsThisOrThat()
{
    $multi_kilobyte_string = "lorem ipsum...";
    $option1 = "dolor";
    $option2 = "amet";

    $this->assertThat($multi_kilobyte_string,
        $this->logicalOr(
            $this->stringContains($option1),
            $this->stringContains($option2)
        )
    );
}

The best source of information for PHPUnit is its source code. Also, the autocomplete functionality of your editor (assuming you are using one that provides it).

Upvotes: 7

Related Questions