To zdarza się tylko w moim systemie. Nikt inny nie mógłby go odtworzyć. Jeśli komunikat o błędzie jest zbyt duży (około 65k bajtów w moim przypadku) nic nie zostanie wydrukowane na ekranie. Używam PHP 7.1.3 na Windows 7, z domyślnym php.ini (limit pamięci ustawiony na 8 gb) i domyślną konfiguracją PHPUnit 6.0.13. Błąd nie pojawia się zarówno w wierszu poleceń, jak i w trybie uprawnień.Co może spowodować, że PHPUnit nie będzie drukować bardzo dużych komunikatów o błędach?
<?php
use PHPUnit\Framework\Constraint\Constraint;
use PHPUnit\Framework\TestCase;
class MyConstraint extends Constraint
{
protected $expected;
function __construct($expected){
parent::__construct();
$this->expected = $expected;
}
protected function matches($actual){
return false;
}
function failureDescription($other): string{
return "desc";
}
function toString(){
return "description";
}
function additionalFailureDescription($other): string{
return str_repeat("x", 100000);
// If set to a smaller dump, error will appear
// some people I asked to try could dump one million
// bytes without problems, while I can't print more
// than about 50k
}
}
class SomeTest extends TestCase
{
function testBigDump(){
TestCase::assertThat("irrelevant", new MyConstraint("irrelevant"));
}
}
?>
A to co mam na ekranie:
PHPUnit 6.0.13 by Sebastian Bergmann i współpracowników.
Czas: PHPDBG 7.1.3 Konfiguracja: ..............
K 01/01 (100%)
Czas: 361 ms pamięci 6.00 MB
było 1 awaria:
1) SomeTest :: testBigDump
<------- Notice no error description here
AWARIE! Testy: 1, Asercje: 1, Awarie: 1.
Czy masz pojęcie, co może spowodować? Z góry dziękuję.
pamięci PHP wydaje się być w porządku. Otrzymasz inny błąd. Czy próbowałeś przekierować wyjście testu do pliku? Może twój wiersz poleceń ma za mało pamięci do wyświetlenia tak długiego łańcucha. Byłoby pomocne, gdyby można opublikować pełny przykład pracy zamiast pseudo kodu, aby inni mogli spróbować go replikować. –
to nie jest pseudo kod. to wystarczy, aby spowodować błąd – Wes