Github에서 PHP 5.3.6 및 최신 버전의 PHPUnit을 실행하고 있습니다. 문서에서 예제 17.1을 복사하면 assertTitle이 실패 할 때 치명적인 오류가 발생합니다. 이 오류 메시지가 나타납니다 :PHPUnit, Selenium Basic 테스트가 치명적 오류로 인해 실패 함
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();
$ 전자> getComparisonFailure()가 NULL이 아닌 개체를 반환합니다. 내가 뭘 잘못하고 있니?
업데이트 : 수정 아직 내 지평선에 아니지만
나는 실패의 원인을 발견했다. phpunit을 라인 92
은/프레임 워크/Constraint.php, 그것을 사용하는 호출로 정의
$this->fail($other,$description)
:
더 PHPUnit_Framework_ComparisonFailure이 전달되지 않기 때문에 protected function fail($other, $description, PHPUnit_Framework_ComparisonFailure $comparisonFailure = NULL)
가 NULL
인 PHPUnit/Framework/Constraint.php의 141 행을 통과했습니다.
던져 새로운 PHPUnit_Framework_ExpectationFailedException ( $ failureDescription, $ comparisonFailure);
위의 설명과 같이 객체를 반환해야하는 getComparisonFailure()로 가져옵니다.
더 이상의 아이디어가 있습니까?
phpunit-selenium의 기본 복사 붙여 넣기 예제에는 복사 및 붙여 넣기가 실패 할 때 단 하나의 단정에 실패 할 때 버그가 있다고합니다. –