来自Ruby on Rails的原始POST

时间:2009-10-13 00:15:28

标签: ruby-on-rails ruby

我正在尝试从单元测试对内部页面执行原始POST,并且出于某种原因我收到以下错误:

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

我的代码如下所示:

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

根据API文档,这应该没问题。我可以使用的唯一格式是,如果我将其作为参数发送,如下:

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

我有一种感觉,我需要要求库的某些部分由于某种原因在这里不起作用。

修改
正如用户Sarah Mei指出的那样,我正在调用错误的帖子方法。我认为它与我的类继承有关,我不确定我可以根据我运行测试的情况来改变。类定义如下:

class anApiControllerTest < ActionController::TestCase

尝试实现的方法是Rails API文档中列出的 post(ActiveResource :: Connection)方法。我对此非常陌生,在截止日期前完全迷失了。任何帮助是极大的赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

这取决于您调用的post方法。 ActionController::Integration::Session中有一个,ActionController::TestProcess中有一个,ActiveResource::Connection中有一个......等等。他们中的大多数都使用params hash作为第二个参数,所以如果第二个调用有效,你可能不会调用你认为正在调用的post