2013-09-26 5 views
6

PHPUnitを使用していて、ページにテキストが存在するかどうかを確認しようとしています。 assertRegExpは動作しますが、ifステートメントを使用してエラーが発生しますFailed asserting that null is true.PHPUnit assert正規表現のテキストが見つかりましたか?

$ testはnullを返すことを理解していますが、テキストが存在する場合、1または0またはtrue/falseを返す方法はわかりません。どんな助けでも感謝しています。

 $element = $this->byCssSelector('body')->text(); 
     $test = $this->assertRegExp('/find this text/i',$element); 

     if($this->assertTrue($test)){ 
      echo 'text found'; 
     } 
     else{ 
      echo 'not found'; 
     } 
+0

assertSomething()はifステートメントに属しません。それは孤立して存在する種です。だから少なくとも私のために、あなたがここで何をするのかははっきりしない。通常、ユニットテストには出力もありません。なぜあなたはそれが欲しい/必要なのか尋ねてもよろしいですか? – hakre

+0

@hakreテキストがページに存在する場合異なる機能の実行を開始する必要があります。このために条件付きを書くにはどうすればいいですか? – Anagio

+0

なぜあなたはしたいですか?これは単体テストであり、条件なしでもうまく動作します。 – hakre

答えて

15

assertRegExp()は何も返しません。アサーションが失敗した場合 - テキストを意味するが見つかりませんでした - その後、次のコードが実行され得ることはありません。

$this->assertRegExp('/find this text/i',$element); 
// following code will not get executed if the text was not found 
// and the test will get marked as "failed" 
4

PHPUnitのがアサーションから値を返すように設計されていません。定義によるアサーションは、失敗したときのフローを破るためのものです。

このようなことをする必要がある場合、なぜPHPUnitを使用するのですか? use preg_match

$test = preg_match('/find this text/i', $element); 

if($test) { 
     echo 'text found'; 
} 
else { 
     echo 'text not found'; 
} 
+0

PHPUnitはこのような操作をサポートするように設計されています。 @ hek2mgl答えを見てください。 –

+0

これは、_such操作によって何を意味するかによって異なります。 PHPUnitはアサーションから値を返すようには設計されていないということです。定義によるアサーションは、失敗したときのフローを破るためのものです。 'if'文でregexp matchの結果を使用したい場合、' preg_match'が行く方法です。 –

+1

私は今あなたを得ました。私には、「assertRegExp」のような「そのような操作」と言っているように思えていたようでした。 –

関連する問題