Come scrivere un test AssertTags in SimpleTest con regex?
-
02-07-2019 - |
Domanda
Vorrei testare una funzione che genererà il testo lorem ipsum
, ma lo fa all'interno dei tag html. Quindi non posso conoscere in anticipo il contenuto testuale, ma conosco la struttura html. Questo è ciò che voglio testare. E forse che la lunghezza dei testi è entro certi limiti.
Quindi quello che mi chiedo è se gli assertTags possono farlo in un modo parafrasato sotto:
Result = "<p>Some text</p>";
Expected = array(
'<p' ,
'regex',
'/p'
);
assertTags(resutl, expected)
Sto usando SimpleTest con CakePHP, ma penso che dovrebbe essere una domanda generale.
Soluzione
$expected = array(
'<p',
'preg:/[A-Za-z\.\s\,]+/',
'/p'
);
Altri suggerimenti
Estendi la classe SimpleExpectation e quindi usa la tua nuova classe Expectation nell'istruzione assert
vedi: http://www.lastcraft.com/expectation_documentation.php#extending
l'esempio fornito è per la convalida di un indirizzo IP ma dovrebbe essere applicabile al tuo problema:
class ValidIp extends SimpleExpectation {
function test($ip) {
return (ip2long($ip) != -1);
}
function testMessage($ip) {
return "Address [$ip] should be a valid IP address";
}
}
quindi nel tuo test
$this->assert(new ValidIp(),$server->getIp());