Покопавшись вокруг, я не нашел флаг или что-то для этого, поэтому я попытался вернуться назад из кода:
Соответствующий код (print_r) находится в:
PHPUnit_Framework_ComparisonFailure_Object
toString()
, и я не вижу способа обеспечить другую реализацию для этого класса без изменения кода в phpunit (поскольку объект создается в статическом вызове)
Таким образом, ради отладки вы можете изменить это на месте, но это не так. приводит к обычным проблемам, с которыми вы сталкиваетесь при изменении стороннего кода, и поскольку вы сказали, что у вас много кода, вы, возможно, не захотите этого делать, поскольку полагаетесь на работу phpunit, как все ожидают.
Способ, который не зависит от изменения кода phpunit и , может быть менее трудным, чем проходить все ваши тесты, и изменение всех вызовов assertTrue () может быть чем-то вроде этого:
Если во всех ваших тестах используется один базовый класс, его еще проще ввести:
<?php
class ErrorTest extends PHPUnit_Framework_TestCase {
public function test1() {
$foo = new StdClass();
$foo->bar = 123;
$foo->baz = "Hi there";
$this->assertTrue($foo);
}
public static function assertTrue($x) {
if(is_object($x)) {
self::fail("Expecting True, got Object of Type: ".get_class($x));
}
parent::assertTrue($x);
}
}
->
phpunit ErrorTest.php
PHPUnit 3.4.15 by Sebastian Bergmann.
F
Time: 0 seconds, Memory: 4.25Mb
There was 1 failure:
1) ErrorTest::test1
Expecting True, got Object of Type: stdClass
/home/mcsvnls/ErrorTest.php:15
/home/mcsvnls/ErrorTest.php:9
FAILURES!
Tests: 1, Assertions: 0, Failures: 1.
Хотя я не уверен, что это «хорошее» решение, это лучшее, что я мог бы предложить прямо сейчас, возможно, это поможет:)