Когда тест пытается открыть страницу, которая не загружается и достигается значение тайм-аута, тест не останавливается и не выдает исключение.Вместо этого он просто движется и действует так, как будто страница загружена успешно.Он делает свои щелчки и останавливается на первом утверждении, которое возвращает false.
Я нашел это в журнале фиксации PHPUnit 3.6.10: https://github.com/sebastianbergmann/phpunit/commit/cb772b06e9bd97f478fff7a212e3a4f7fe96bc29
В источнике: https://github.com/sebastianbergmann/phpunit/blob/5d0ff52bdff9afd479e38fdc880adce453ce88e5/PHPUnit/Framework/TestResult.php#L665
Исключение выглядит так, как будто оно все еще должно быть перехвачено, но, к сожалению, исключение, по-видимому, не вызывает остановку теста, поэтому я не понимаю, что делать здесь.
Вотпример теста для провоцирования поведения, о котором я говорю:
<?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
?>
Я что-то не так делаю или это может быть ошибкой?