【发布时间】:2016-07-27 11:15:24
【问题描述】:
我正在为执行 SQL 查询的方法编写测试。对于这个项目,他们需要响应为 JSON。我的测试是查看查询返回预期的响应数。我遇到了障碍,因为我的对象是 JSON 而不是数组。如何将 JSON 转换为 ARRAY?
test "works" do
report = get :method
assert_equal 1, report.count
end
NoMethodError: 未定义的方法 `count'...
我尝试添加array_report = ActiveSupport::JSON.decode(report),但收到以下错误消息。
TypeError: ActionController::TestResponse 没有隐式转换 成字符串
如何正确解析 JSON?
编辑
def method
sql = "SELECT MIN(departure_date), ch_invoice.invoice_id
FROM ch_invoice
INNER JOIN ch_trip
ON ch_invoice.invoice_id = ch_trip.invoice_id
WHERE departure_date < SYSDATE
AND service_rendered = 0
AND paid = 1
Group By ch_invoice.invoice_id"
report = ActiveRecord::Base.connection.exec_query(sql)
render json: report
end
编辑 2
示例 JSON.parse 代码。这就是查询给我的。
{"min(departure_date)"=>"2015-03-01T00:00:00.000Z", "invoice_id"=>"123catfood"}
{"min(departure_date)"=>"2015-01-01T00:00:00.000Z", "invoice_id"=>"123dogfood"}
【问题讨论】:
标签: arrays ruby json unit-testing ruby-on-rails-4