Когда тест пытается открыть страницу, которая не загружается, и достигается значение времени ожидания, тест не останавливается и не выдает исключение. Вместо этого он просто движется дальше и ведет себя так, как будто страница успешно загружена. Он делает свои клики и останавливается на первом утверждении, которое возвращает false.
Я нашел это в журнале коммитов PHPUnit 3.6.10: phpunit/commit/cb772b06e9bd97f478fff7a212e3a4f7fe96bc29
Похоже, что исключение все еще должно быть перехвачено, но, к сожалению, исключение, похоже, не вызывает остановку теста, поэтому я не знаю, что здесь делать.
Вот пример теста, чтобы спровоцировать поведение, о котором я говорю:
<?php
class Example extends PHPUnit_Extensions_SeleniumTestCase
{
protected function setUp() {
$this->setBrowser('*firefox');
$this->setBrowserUrl('http://myserver/timeout.php');
$this->setTimeout(10);
$this->setWaitForPageToLoad(true);
}
public function testMyTestCase() {
// This should trigger an exception after timeout:
$this->openAndWait('/');
// Anything below this line SHOULD never be executed because of timeout:
$this->click('id=clicketyclickthiswontbeclicked');
$this->click('id=moreclicksthatwillnotbeclicked');
// This will fail the test, because timeout didn't stop it
$this->assertTextPresent('this text');
}
}
?>
Следующий файл PHP должен инициировать тайм-аут.
timeout.php:
<?php
// Should trigger timeout
sleep(30);
// (...) Rest of the page
?>
Я что-то не так делаю или это может быть баг?