2008-12-03 8 views
7

Je voudrais écrire un test fonctionnel d'un service web RESTful sur lequel je travaille dans une application Ruby on Rails.Test fonctionnel d'un POST RESTful dans Ruby on Rails

Le test consiste en une requête POST dans laquelle le corps de la requête est un document XML ordinaire et non un formulaire. Des pointeurs sur la façon de faire cela? Le problème que je rencontre est de savoir comment spécifier le corps XML dans l'appel à la méthode post.

Répondre

-1

Extrayez la macro "should_be_restful" de shoulda. Cette macro sera bientôt deprecated de shoulda et uniquement disponible dans la gemme woulda.

1

Vous pouvez le faire en réglant @request.env['RAW_POST_BODY'] sur le flux d'entrée souhaité.

8

Ce qui suit a fonctionné pour moi:

@request.env['RAW_POST_DATA'] = MY_XML_STRING 
post :create 
-1

Je viens d'écrire un script de test en utilisant Net: HTTP pour tester le service REST.

0

J'ai trouvé la solution suivante à http://de.softuses.com/6051

message = '<?xml version="1.0" encoding="UTF-8"?> 
<tag>content</tag>' 

@xml_request_headers ||= {} 
@xml_request_headers['HTTP_ACCEPT'] = @xml_request_headers['CONTENT_TYPE'] = 'application/xml' 

post '/controller/action.xml', message, @xml_request_headers 

En fait, je @xml_request_headers dans ma défini méthode setup et peut l'utiliser dans tous mes tests dans ce fichier. Peut-être que ce serait une bonne idée de le mettre à test_helper.rb si cela est requis par plus de fichiers.