【问题标题】:How do I assert the result is an email in PHPUnit?如何断言结果是 PHPUnit 中的电子邮件?
【发布时间】:2016-08-10 15:21:37
【问题描述】:

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

我已经尝试使用这个来测试它是否是字符串:

$this->assertInternalType('string', $myExpectedEmail);

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

$this->assertInternalType('email', $myExpectedEmail);

但我收到此错误:

Type specified for PHPUnit_Framework_Constraint_IsType <email> is not a valid type.

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

【问题讨论】:

    标签: php unit-testing email testing phpunit


    【解决方案1】:

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

    $this->assertSame($expectedEmailString, $emailToTest);
    

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

    $this->assertSame($emailToTest, filter_var($emailToTest, FILTER_VALIDATE_EMAIL));
    

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

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

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

    【讨论】:

    • 如果电子邮件格式正确,则无法正常工作,我取回了电子邮件值。来自文档:“返回过滤后的数据,如果过滤器失败,则返回 FALSE。”错误:断言 'myEmail@gmail.com' 为真时失败。
    【解决方案2】:

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

        $this->assertRegExp('/^.+\@\S+\.\S+$/', $myExpectedEmail);
    

    希望有帮助

    【讨论】:

      猜你喜欢
      • 2014-03-06
      • 1970-01-01
      • 2022-01-17
      • 2023-04-05
      • 2017-10-06
      • 2022-08-16
      • 2011-05-26
      • 1970-01-01
      • 2021-01-25
      相关资源
      最近更新 更多