【发布时间】:2015-04-19 21:32:25
【问题描述】:
这个测试一直失败我不知道该怎么办。我猜想解决方法是渲染原始 Json 数组,但我完全迷失了。
错误
NoMethodError: undefined method []' for nil:NilClass
/Users/newuser/railschallenge-city-watch/test/api/emergencies_create_test.rb:10:inblock in '
紧急情况控制员
def create
@emergency = Emergency.new(emergency_params)
if @emergency.save
render json: @emergency.to_json , :status => 201
end
end
test 'POST /emergencies/ simple creation' do
post '/emergencies/', emergency: { code: 'E-99999999', fire_severity: 1, police_severity: 2, medical_severity: 3 }
json_response = JSON.parse(response.body)
assert_equal 201, response.status
assert_equal nil, body['message']
assert_equal 'E-99999999', json_response['emergency']['code']
assert_equal 1, json_response['emergency']['fire_severity']
assert_equal 2, json_response['emergency']['police_severity']
assert_equal 3, json_response['emergency']['medical_severity']
结束
【问题讨论】:
-
json_response['emergency'] 为零。打印 json_response 值进行调试。
-
这是编写测试的方式,它正在寻找这个:emergency ={code:" E-99999999'", fire_severity = "1 ", police_severity:" 2" , medical_severity = " 3"}从字面上看,但它收到这个:{code:“E-99999999'”,fire_severity =“1”,police_severity:“2”,medical_severity =“3”}我正在尝试一种方法让第一个输出呈现原始JSON,或者至少我是这么想的。我真的不知道我以前从来没有在合法的层面上搞过 JSON。
标签: ruby-on-rails integration-testing