2017-12-13 11 views
-1

私はPHPで始まり、単体テストを書いて、正しいものが得られるかどうかを確認しました。PHPのfilter_varが電子メールアドレスを認識しないのはなぜですか?

<?php 
use PHPUnit\Framework\TestCase; 

class MyTest extends TestCase { 
    public function testEmailWtf() { 
     $this->assertTrue(filter_var("[email protected]", FILTER_VALIDATE_EMAIL)); 
    } 
} 
?> 

これは失敗しますが、理由はわかりません。

1)のMyTest :: testEmailWtf

は '[email protected]が' 真であることを主張しませんでした。

なぜ有効なメールアドレスを受け入れないのですか?

+2

'FILTER_VALIDATE_EMAIL'はブール値を返しません。 – mario

+2

'戻り値:フィルタリングされたデータを返します。フィルタが失敗した場合はFALSEを返します。 ' – aynber

+0

@marioありがとうございます。マニュアルを十分に読んでいませんでした。 – Robert

答えて

4

http://php.net/manual/en/function.filter-var.phpによると、filter_varは何かが間違っている場合FALSEを返す、またはすべての[OK]場合あなたの文字列を返します。

だから私は、あなたがassertEqualsとあなたのテストを変更する必要があります信じる:

<?php 
$emailToValidate = "[email protected]"; 
$this->assertEquals($emailToValidate , filter_var($emailToValidate, FILTER_VALIDATE_EMAIL)); 
?> 
+3

私はおそらく別のアサーション '$ this-> assertSame(" [email protected] "、filter_var(" [email protected] "、FILTER_VALIDATE_EMAIL))を追加して、 –

関連する問題