2009-10-13 8 views
1

Je suis en train de faire une ligne POST à ​​une page interne d'un test unitaire, et pour une raison quelconque, je reçois l'erreur suivante:Raw POST de Ruby on Rails

NoMethodError: undefined method `symbolize_keys' for #<String:0x258a910> 
    unit/call_route_attempt_test.rb:10:in `test_response_from_call_info' 

Mon code ressemble ceci:

post :call_info, '<?xml version="1.0" encoding="UTF-8"?><request-call-info>...SOME XML HERE...</request-call-info>' 

Cela devrait être bon selon les docs API. Le seul format que je peux aller travailler est si je l'envoie en tant que paramètres comme ceci:

post :call_info, :post => {:a_var => '<?xml version="1.0" encoding="UTF-8"?><request-call-info>...SOME XML HERE...</request-call-info>'} 

J'ai le sentiment que je dois exiger une partie de la bibliothèque pour une raison quelconque ne fonctionne pas ici.

Modifier
Comme utilisateur souligne Sarah Mei, je vous appelle la mauvaise méthode de poste. Je pense que cela a à voir avec mon héritage de classe, que je ne suis pas sûr de pouvoir changer étant donné les circonstances dans lesquelles je fais un test. La définition de la classe est la suivante:

class anApiControllerTest < ActionController::TestCase 

La méthode que je suis essayer à mettre en œuvre est le après (ActiveResource :: Connexion) Méthode figurant sur l'API Rails docs. Je suis vraiment nouveau à ce sujet, tout à fait perdu et sur une date limite. Toute aide est grandement appréciée. Merci!

Répondre

1

Cela dépend de la méthode post que vous appelez. Il y en a un en ActionController::Integration::Session, un en ActionController::TestProcess, un en ActiveResource::Connection ... etc. La plupart d'entre eux prennent un paramètre de hachage comme second paramètre, donc si le second appel fonctionne, vous n'appelez probablement pas le post que vous pensez appeler.

+0

Je pense que vous avez définitivement raison. Comment puis-je spécifier lequel appeler? – bloudermilk