2016-04-06 15 views
0

SQLクエリを実行しているメソッドのテストを書いています。このプロジェクトでは、JSONの応答が必要です。私のテストは、クエリが予想される応答数を返すことを確認することです。私はオブジェクトが配列の代わりにJSONであるのでロードブロックを実行しました。 JSONをARRAYに変換するにはどうすればよいですか?JSONとRailsの配列を解析する

test "works" do 
    report = get :method 
    assert_equal 1, report.count 
    end 

NoMethodError: undefined method `count'...

私はarray_report = ActiveSupport::JSON.decode(report)を追加しようとしましたが、私は、次のエラーメッセージが表示されます。

TypeError: no implicit conversion of ActionController::TestResponse into String

JSONを正しく解析するにはどうすればよいですか?

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

サンプル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"} 

答えて

1

JSON.parse <string>おそらくここに必要なものです。

test "works" do 
    get :method 

    result = JSON.parse(response.body) 

    assert_equal 1, result.count 
end 

"How to unit-test a JSON controller?" とActiveSupport JSON documentionをチェックアウト:それはこのような何かを見ることができます。

+0

これは、クエリの各セルの数を私に与えています。だから、 "Bugs" "Bunny"は、私がそれをデータの1行にしたいときは2です。これを修正する方法に関する考え? – CheeseFry

+0

例を投稿できますかJSON.parse(response.body)は、私たちが作業しているものを見ることができるようになっていますか? – matt721

+0

あなたのコードは正しいです。私はちょうど私が間違ったことを打つことを認識した。私は私の工場から私のサンプルデータをヒットすることを期待していましたが、私は実際に私のDBに突き抜けて、データを引っ張っています。それはブエノです。 – CheeseFry

関連する問題