如何断言结果是PHPUnit中的电子邮件?

Moh*_*iri 2 php email testing phpunit unit-testing

我希望能够测试结果是一封电子邮件(myMail@provider.com ..)

我试过用它来测试它是否是字符串:

$this->assertInternalType('string', $myExpectedEmail);
Run Code Online (Sandbox Code Playgroud)

但我认为这不是很准确......我试过这个:

$this->assertInternalType('email', $myExpectedEmail);
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

Type specified for PHPUnit_Framework_Constraint_IsType <email> is not a valid type.
Run Code Online (Sandbox Code Playgroud)

如何在PHPunit中测试电子邮件格式的任何想法/最佳实践?

Raf*_*ski 6

如果您想检查结果是否与预期相同(字符串比较)您应该使用:

$this->assertSame($expectedEmailString, $emailToTest);
Run Code Online (Sandbox Code Playgroud)

如果您需要检查字符串是否是有效的电子邮件您可以使用:

$this->assertSame($emailToTest, filter_var($emailToTest, FILTER_VALIDATE_EMAIL));
Run Code Online (Sandbox Code Playgroud)

http://php.net/manual/en/function.filter-var.php

http://php.net/manual/en/filter.filters.validate.php

简单干净的解决方案享受:)


Mat*_*teo 5

您可以使用正则表达式来验证电子邮件地址。就像是:

    $this->assertRegExp('/^.+\@\S+\.\S+$/', $myExpectedEmail);
Run Code Online (Sandbox Code Playgroud)

希望这有帮助