Unit-Tests cookies in PHP
Den Standard der Praxis für die unit-Test-Funktionalität, die sich auf die session/cookie-Informationen ist die Verwendung einer Abstraktion Bibliothek. Aber was ist, wenn ich schreiben will und unit-test-diese Abstraktion Bibliothek? Die Dokumentation für die PHP - setcookie
- Funktion sagt, dass das cookie verfügbar sein wird auf die nächste Anfrage. Über ein Kommandozeilen-tool zum testen, es gibt keine solche Sache wie eine "Anfrage". So wie ich das unit-test-die richtigen cookie-Einstellungen?
Möchte ich testen, ob alle Parameter der setcookie
- Funktion korrekt eingestellt sind, indem Sie meine abstraction library. Diese Parameter werden festgelegt nach bestimmten Bedingungen und die Methode Aufrufe.
Die einzige Lösung, die ich denken kann, ist, zu verhöhnen, die setcookie
Funktion mit der runkit
Erweiterung, die ich nicht installieren möchten. Andere Ideen?
- mögliche Duplikate von PHPUnit - Unit-Tests mit Artikel, die zum senden von Header
- Also die Antworten sind.. a) einen wrapper verwenden und vergessen Sie unit-Tests, oder b) verwenden Sie es nicht. <Ironie>Toll.</Ironie> #frustriert
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich eine andere, sehr einfache Lösung: Eine wrapper-Klasse für die PHP -
setcookie
Funktion, die so einfach ist, ist es nicht nötig, sein Gerät getestet:Den
setcookie
Methode kann dann verspottet. Dies hat den zusätzlichen Vorteil, dass ich umsetzen kann, andere Methoden wieexpireCookie
.$_COOKIE['...']
mit dieser wrapper-Klasse?Können Sie einen Wert direkt in das aktuelle $_COOKIE-array:
(dies funktioniert im CLI-Modus auch). Beachten Sie, dass $_REQUEST nicht aktualisiert werden diese.
Aber wenn Sie nur versuchen zu manipulieren cookies, damit Sie anschließend Zugriff der Sitzung, warum nicht einfach den Zugriff auf die session direkt:
Aber reden wir über das unit-Test-hier - nicht-integration testing - was darauf hindeutet, dass der code ist nicht sehr gut strukturiert.