Как написать тест AssertTags в SimpleTest с регулярным выражением? - PullRequest
2 голосов
/ 25 сентября 2008

Я хочу протестировать функцию, которая будет генерировать текст lorem ipsum, но это делается в тегах html. Таким образом, я не могу знать заранее текстовое содержание, но я знаю структуру HTML. Это то, что я хочу проверить. И возможно, что длина текстов находится в определенных пределах. Так что мне интересно, может ли assertTags сделать это так, как показано ниже:

Result = "<p>Some text</p>";
Expected = array( 
   '<p' ,
   'regex',
   '/p'
);
assertTags(resutl, expected)

Я использую SimpleTest с CakePHP, но думаю, что это должен быть общий вопрос.

Ответы [ 2 ]

2 голосов
/ 25 сентября 2008
$expected = array(
    '<p',
    'preg:/[A-Za-z\.\s\,]+/',
    '/p'
);
0 голосов
/ 25 сентября 2008

Расширьте класс SimpleExpectation, а затем используйте новый класс Expectation в операторе assert

см .: http://www.lastcraft.com/expectation_documentation.php#extending

приведенный пример предназначен для проверки IP-адреса, но должен соответствовать вашей проблеме:

class ValidIp extends SimpleExpectation {

  function test($ip) {
    return (ip2long($ip) != -1);
  }

  function testMessage($ip) {
    return "Address [$ip] should be a valid IP address";
  }
}

тогда в вашем тесте

$this->assert(new ValidIp(),$server->getIp());
...