Sitzungscookie kann nicht gesendet werden - Header bereits gesendet PHPUnit / Laravel

7

Ich habe dieses merkwürdige Problem, wenn ich die parent::setUp() auf meiner TestCase-Klasse für Unit-Test eine Klasse aufrufen Wenn ich phpunit ausführe, schleudere ich diesen Fehler:

  

1) MatchRequestRepositoryTest :: test_find_requests_by_match_id   ErrorException: session_start (): Session-Cookie-Header können nicht gesendet werden   bereits gesendet von (Ausgabe gestartet um   /var/www/project.dev/vendor/phpunit/phpunit/PHPUnit/TextUI/TestRunner.php:459)

Was kann das Problem sein? Danke für jede Hilfe.

    
Fabrizio 24.04.2014, 13:39
quelle

2 Antworten

19

Das Problem ist, dass Sie etwas Code haben, vielleicht tief in dem Framework, das Sie verwenden, das session_start() aufruft. Das wiederum möchte einen Cookie senden. Aber PHPUnit hat bereits damit begonnen, Ausgaben in stdout zu schreiben.

Der Punkt, den Sie hier verstehen müssen, ist, dass dies nur ein Komponententest ist, niemand kümmert sich um den Header. Also einfach die Fehlermeldung unterdrücken. Und wie Sie das tun, ohne das zu testende System zu ändern, rufen Sie session_start () in Ihrem eigenen Unit-Test auf (entweder vor parent::setUp() oder innerhalb dieser setUp-Funktion). Und verwenden Sie das Präfix @ , um Fehler zu unterdrücken. z.B.

%Vor%     
Darren Cook 01.05.2014, 01:42
quelle
12

Der beste Weg, dies in PHPUnit zu tun, besteht darin, die Ausgabe an stderr statt an stdout zu senden, wie es diese Antwort demonstriert .

%Vor%

Oder fügen Sie stderr="true" in Ihrer phpunit.xml hinzu, wie in dieser Kommentar angegeben ist.

    
Jeff Puckett 27.06.2016 03:21
quelle