2013-09-26 12 views
6

Sto usando PHPUnit e sto cercando di verificare se il testo esiste su una pagina. L'assertRegExp funziona ma usando l'istruzione if ottengo l'errore Failed asserting that null is true.PHPUnit assertTrue se viene trovato un testo regolare?

Capisco che $ test restituisca null, ma non so come farlo restituire 1 o 0 o vero/falso se il testo esiste? Ogni aiuto è apprezzato grazie.

 $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

Un assertSomething() non appartiene a un'istruzione if. È una specie che esiste in isolamento. Quindi almeno per me non è chiaro cosa fai qui. Normalmente non vi è alcuna uscita coinvolta nei test unitari. Posso chiederti perché vuoi/hai bisogno di questo? – hakre

+0

@hakre se il testo esiste sulla pagina ho bisogno di iniziare a eseguire diverse funzioni. Come posso scrivere un condizionale per questo? – Anagio

+0

Perché vorresti? Questo è unit-testing e funziona piuttosto bene senza condizionali. – hakre

risposta

15

assertRegExp() non restituirà nulla. Se l'asserzione fallisce - che significa il testo non è stato trovato - quindi il seguente codice non verrà eseguito:

$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 non è progettato per restituire valore da asserzioni. Le asserzioni per definizione hanno lo scopo di interrompere il flusso quando falliscono.

Se hai bisogno di fare qualcosa di simile, perché usi PHPUnit? Utilizzare preg_match:

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

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

PHPUnit è progettato per supportare tali operazioni. Dai un'occhiata a @ hek2mgl answer. –

+0

Dipende da cosa intendi con _such operations_. Intendevo dire che PHPUnit non è progettato per restituire valore dalle asserzioni. Le asserzioni per definizione hanno lo scopo di interrompere il flusso quando falliscono. Se si desidera utilizzare il risultato di una corrispondenza regexp in un'istruzione 'if', allora' preg_match' è la strada da percorrere. –

+1

Ti ho preso ora. Mi è sembrato che stavi cercando di dire che "tali operazioni" come "assertRegExp". –