Ich arbeite mit Symfony2 und dem FOSRestBundle und versuche jetzt, einen Funktionstest für meine Rest-API zu schreiben. Ich möchte einen Benutzernamen POST POST und ihn ähnlich anzeigen http://npmasters.com/2012/11/25/Symfony2-Rest-FOSRestBundle.html. Das heißt, mein Controller gibt eine View::createRedirect([...],Codes::HTTP_CREATED)
Beispiel.
Nun sieht mein Test so aus:
[...]
$client = static::createClient(array("debug"=>true));
$request = $client->request("POST", "/names",
array(),
array(),
array("CONTENT_TYPE" => "application/json"),
$expression);
$response = $client->getResponse();
print_r($response);
$this->assertEquals($response->getStatusCode(), 201);
$response = $client->followRedirect();
print_r($response);
Wenn ich es starte, bekomme ich folgende Ausgabe:
SymfonyComponentHttpFoundationResponse Object
(
[...]
[location] => Array
(
[0] => /names/90
)
[...]
There was 1 error:
1) MYNAMEMyBundleTestsControllerRestControllerTest::testAddUser
LogicException: The request was not redirected.
Warum wurde es nicht umgeleitet? Wo ist mein Fehler?
Danke für jede Hilfe!
Antworten:
0 für die Antwort № 1Wenn Sie eine Weiterleitung generieren möchten, sollte Ihr Backend eine 301
("Permanent") oder 302
("Temporärer") HTTP-Status. Ein Statuscode von 201
ist nicht wirklich eine Weiterleitung, auch wenn Sie ein Location
Header. Ich denke, es hängt von der Client - Implementierung ab, was auf einem Client geschieht 201
+ Location
.