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.
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.
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.
Tags und Links unit-testing php phpunit laravel-4