我开始在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
答案 0 :(得分:0)
我在控制器规范上看到了完整的响应对象,但是看the code,ActionDispatch::IntegrationTest
代码似乎只返回response.status
,而不是整个响应对象。
The documentation并未直接表示您可以访问响应对象。您可以尝试执行render_views
并查看是否有任何区别,但基于对代码的检查,它似乎不会。