Я использую PHP 5.3.6 и последнюю версию PHPUnit от Github.Когда я копирую пример 17.1 из документов, он терпит фатальную ошибку при сбое assertTitle.Я получаю это сообщение об ошибке:
Fatal error: Call to a member function toString() on a non-object in <path>/phpunit/phpunit-selenium/PHPUnit/Extensions/SeleniumTestCase.php on line 1041
Когда я изменяю утверждение, чтобы пройти, PHPUnit работает просто отлично.
Я выкопал строку, и это фрагмент:
protected function onNotSuccessfulTest(Exception $e)
{
if ($e instanceof PHPUnit_Framework_ExpectationFailedException) {
$buffer = 'Current URL: ' . $this->drivers[0]->getLocation() .
"\n";
$message = $e->getComparisonFailure()->toString();
$ e-> getComparisonFailure () возвращает NULL, а не объект.Что я делаю неправильно?
ОБНОВЛЕНИЕ:
Я нашел причину сбоя, хотя исправление еще не на моем горизонте.
В строке 92 PHPUnit / Framework / Constraint.phpон вызывается с помощью
$this->fail($other,$description)
, который определяется как:
protected function fail($other, $description, PHPUnit_Framework_ComparisonFailure $comparisonFailure = NULL)
Поскольку не передается PHPUnit_Framework_ComparisonFailure, передается NULL
в строке 141 PHPUnit / Framework / Constraint.php
сгенерировать новый PHPUnit_Framework_ExpectationFailedException ($ failDescription, $ сравнениеFailure);
, который выбираетсяgetComparisonFailure (), который должен возвращать объект, как описано выше.
Есть еще идеи?