Ich habe ein Problem beim Testen eines einfachen Illuminate \ Http \ Response-Objekts in einem PHP-Test. Der fragliche Fehler ist:
%Vor% wobei das R angezeigt wird, wenn phpunit --tap
als
Die Klasse, die ich testen möchte, ist:
%Vor%und der Test ist
%Vor%Beachten Sie, dass beim Testen einer Route in meiner App mit dem Laravel
derselbe Fehler auftritt this->route('GET','routeName')
Hilfsmethode, so scheint dies ein allgemeiner Fehler im Zusammenhang mit der Antwortanforderung zu sein. Soweit ich mir das vorstellen kann, gibt es nichts in meiner Anwendung, das etwas mit der Ausgabepufferung (absichtlich) funky macht, was die einzige Sache ist, die ich mir vorstellen kann, die die Standardarbeit der Antwortklasse durcheinander bringen könnte. p>
Ich benutze phpunit 4.3-dev, laravel 4.2.1 und Spott für die Tests.
Ich habe im Internet in Bezug auf diesen speziellen riskanten Fehlercode nicht viel gefunden, so dass ich ohne weitere Hilfe ratlos bin.
Ich hatte das gleiche Problem mit einem riskanten Testfall beim Testen in Laravel 5. Das Problem hier war, dass ich einen Code wie den folgenden in meiner Navigation hatte (Standardlayout-Datei):
%Vor% Der Test hat diesen Abschnitt nicht gefallen, weil der ternäre Operator ( ?
) nicht gut genug geschlossen wurde. Ich ersetzte es durch das Folgende, um es zum Laufen zu bringen (hinzugefügte Klammern um den ternären Operatorabschnitt):
Ich habe dies gefunden, indem ich die Blade-Syntax Stück für Stück aus der angeforderten Ansicht, dem Layout, das sie erweitert hat, und den enthaltenen Dateien entfernt habe. An dem Punkt, an dem die obige Syntax entfernt wurde, funktionierte es, also gab es den Fehler.
Derselbe Fehler ist aufgetreten, als ich einen leeren Wert für einen Ertrag übergeben habe, zB wie im folgenden Szenario:
layout.blade.php
%Vor%page.blade.php
%Vor%Vielleicht klar, aber nur für den Fall, dass Sie den gleichen Fehler gemacht haben: Sie müssen alle beteiligten Dateien überprüfen.
Ich hatte den folgenden Test ausgeführt, der die Anmeldeseite besucht, E-Mail und Passwort eingibt und den Login-Button drückt:
Tests / AuthenticationTest.php
%Vor%app / Http / routes.php
%Vor%app / Http / Controller / Auth / AuthController.php
%Vor%Also musste ich besonders die folgenden Dateien überprüfen, wo ich Änderungen vorgenommen habe:
Passiert auch in Laravel 5.
PHPUnit wird dies werfen, wenn das Antwortformat nicht korrekt ist.
Es könnte sein aufgrund:
@stop
, das von Laravel nicht als Fehler angesehen wurde (und nicht protokolliert wurde) Es stellt sich heraus, dass das Problem auf die fragliche Ansicht zurückzuführen ist, indem Sie
verwenden Input::old()
in einem Formular. Nach dem Versuch, einfach auf Input::old('foo')
in einem PHP-Test zuzugreifen, habe ich ein
RuntimeException: Session store not set on request.
Der wahre Schuldige war also im Sessions-Store in meinen Unit-Tests statt in jedem Request / View-Render-Problem. Das Problem wurde gelöst, indem der Sitzungsspeicher für die aktuelle Anforderungsinstanz in der Methode testRender () festgelegt wurde:
\Illuminate\Support\Facades\Request::setSession($this->app['session.store'])
Ich habe die gleiche Fehlermeldung von PhpUnit gefällt Ihnen .. Ich habe '@stop' auf falsche Zeile in Sicht (Blade) -Datei geschrieben .. Ich habe bearbeitet, indem Sie nach rechts '@stop' nach rechts und dann PHPUnit Tests nach oben bewegt ist bestanden!
Versuchen Sie, Ihren @ section @ stop-Block in Ihren Blade-Dateien zu überprüfen.
Ich hatte ein sehr ähnliches Problem. Das Problem war, dass ich versuchte, die Eigenschaft von Nicht-Objekt (NULL) in der Ansicht zu erhalten, aber anstelle von PHP-Fehler 'Versuch, Eigenschaft von Nicht-Objekt zu bekommen' phpunit zeigte 'OK, aber unvollständige, übersprungene oder riskante Tests!' .
Wenn Sie also das gleiche Problem haben, prüfen Sie diese Art von Fehlern in der View-Datei.