Rails中的请求测试不返回正文

时间:2016-05-31 22:28:57

标签: ruby-on-rails request integration-testing

我开始在rails中对我的应用程序进行一些测试,按照官方教程,我写了这个:

class UserFlowTest < ActionDispatch::IntegrationTest
    def login
        post ns_login_user_path, { :user => { :username => 'user', :password => 'password' } }
        assert_response 200
    end

    test "should complete a flow" do
        login
        post create_participant_path(:event_id => events(:myevent).id), {
            :format     => :json,
            :event_role => event_roles(:regular_participant).id,
            :in_team    => true
        }
        r = JSON.parse(response.body)
        assert_response 200
        puts "response creating participation #{r.as_json}"
        participant_id = r[:participant_id]
    end
end

登录确定,但在此之后,尝试创建参与者时,response是一个没有.body属性的变量,只有数字200(状态),所以{{ 1}}方法崩溃。

这是我JSON.parse的相关部分:

routes.rb

控制器# Events scope 'events', :controller => :events do # some routes scope ':event_id', :controller => :events do # some routes scope 'participants', :controller => :participants do post '', :action => :create_participant, :as => :create_participant # some routes end end end

ParticipantsController.rb

1 个答案:

答案 0 :(得分:0)

我在控制器规范上看到了完整的响应对象,但是看the codeActionDispatch::IntegrationTest代码似乎只返回response.status,而不是整个响应对象。

The documentation并未直接表示您可以访问响应对象。您可以尝试执行render_views并查看是否有任何区别,但基于对代码的检查,它似乎不会。