2015-10-26 11 views
6

Ich baue eine REST API in Symfony und möchte sie mit Behat testen (mit Mink und der behat Erweiterung für symfony2). Es gibt kein Problem für die GET-Methoden, ich "spotte" nur einige Datenbankobjekte, verwende die "Ich bin bei" -Schrittendefinition und überprüfe die Antwort.Wie man eine REST API mit Behath und Mink in Symfony 2 testet

Aber wenn es darum geht, zu testen, ob der Beitrag eines bestimmten Elements funktioniert, weiß ich nicht, wie man Postparams mit Mink sendet. Ich weiß, dass es mit d. H. Guzzle getan werden könnte, aber ich denke, es wäre viel besser, es durch Mink und die Symfony-Erweiterung zu machen.

Was ich suche ist die Möglichkeit, einen Schritt wie

When I POST to <url> the following data: 
| field1 | field2 | field3 | 
| value1 | value2 | value3 | 

Gibt es eine einfache Möglichkeit, zu definieren, das Mink mit schicken? Vielen Dank!

+0

einen Blick auf diese: https://alfrednutile.info/ Beiträge/103 –

+0

@CarlosGranados yep, ich habe diesen Artikel bereits gelesen. Das Problem ist, dass eine einfache Post Anfrage macht und ich möchte eine interne Anfrage machen die Art, wie Nerz mit Symfony tut – petekaner

+0

[Api Anfrage Response Tests mit behat v2 enthält JSON, XML, HTML und CLI] (http: // www. inanzzz.com/index.php/post/ajqn/api-request-response-testing-with-behat-v2-includes-json-xml-html-and-cli) und [Api Anfrage Antwort Test mit behat v1] (http : //www.inanzzz.com/index.php/post/xw1v/api-request-response-testing-with-behat-v1) – BentCoder

Antwort

8

Sie sollten es tun, wie folgt:

$session->getDriver()->getClient()->request ('POST', $url, $postdata); 

Dies ist, was Nerz für seine visit Methode verwendet nur statt Post mit bekommen

+2

Dies funktioniert nur mit Goutte-Treiber. –

+0

Wie ist das Format der $ postdata? Ist es key => value array? – osantos

+0

Die $ postdata Signatur befindet sich im symfony/browser-kit/Client.php. Ja, $ postdata ist ein assoziatives Array. – Everett