Ich schreibe einen Test für eine Methode, die eine SQL-Abfrage ausführt. Für dieses Projekt benötigen sie die Antwort als JSON. Mein Test ist zu sehen, dass die Abfrage die erwartete Anzahl der Antworten zurückgibt. Ich bin in einen Straßenblock gerannt, da mein Objekt JSON anstelle eines Arrays ist. Wie konvertiere ich den JSON in einen ARRAY?Parse JSON zu einem Array in Rails
test "works" do
report = get :method
assert_equal 1, report.count
end
NoMethodError: undefined method `count'...
Ich habe versucht, das Hinzufügen array_report = ActiveSupport::JSON.decode(report)
aber ich bekomme die folgende Fehlermeldung.
TypeError: no implicit conversion of ActionController::TestResponse into String
Wie kann ich den JSON richtig parsen?
EDIT
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
EDIT 2
Probe JSON.parse Code. Dies ist, was die Abfrage mir gibt.
{"min(departure_date)"=>"2015-03-01T00:00:00.000Z", "invoice_id"=>"123catfood"}
{"min(departure_date)"=>"2015-01-01T00:00:00.000Z", "invoice_id"=>"123dogfood"}
Dies gibt mir eine Zählung für jede Zelle in der Abfrage. Also "Bugs" "Bunny" ist 2, wenn ich möchte, dass es eine ROW von Daten ist. Gedanken darüber, wie das zu beheben ist? – CheeseFry
Könnten Sie ein Beispiel posten JSON.parse (response.body) ist, damit ich sehen kann, woran wir arbeiten? – matt721
Ihr Code ist richtig. Ich habe gerade gemerkt, dass ich das falsche Ding treffe. Ich hatte erwartet, nur meine Beispieldaten von meiner Fabrik zu treffen, aber ich stoße tatsächlich durch meine Datenbank und ziehe Daten. Das ist kein Bueno. – CheeseFry