私のアプローチは少し異なります。 (このアプローチは、JSONまたはXMLをビューとしてレンダリングする他の宝石にも当てはまります)。私は、できるだけユニットテストを優先します。 Jbuilderを使用すると、ほとんどのテストを単体テストに変換できます。
はい、コントローラーの機能テストはまだありますが、ごくわずかであり、JSONを解析しません。機能テストは、レンダリングされたJSONではなくコントローラのロジックのみをテストします。有効な要求は、次のことを主張する可能性があるため、機能テスト(RSpecの):
assert_response :success
expect(response).to render_template(:show)
expect(assigns(:item).id).to eq(expected_item.id)
私はちょうどそれが成功したことを確認していますが、それはテンプレートをレンダリングし、それがテンプレートにアイテムを渡します。この時点で、ビューには適切なレンダリングを行うために必要な情報があります。
JbuilderビューのユニットテストによってレンダリングされたJSONをテストします。
describe 'api/v1/items/show.json.jbuilder' do
it 'includes foo' do
assign(:item, account.build(foo: 'bar'))
render
json = JSON.parse(rendered)
expect(json['item']['foo']).to eq('bar')
end
# A bunch of other JSON tests...
json応答を解析するのが最も簡単な方法でしょうか? – jdeseno
私はユニットテストが実際にビューを呼び出さないという印象を受けました。それは事実ですか?はいの場合、どのような種類のテストを私が探しているもの(ビュー?) –
私はこの質問は既に議論されていると信じている[ここ](http://stackoverflow.com/questions/336716/how-to-test-json-result-from -rails-functional-tests)である。あなたがやっているのはユニットではなく、機能テストです。実際にはビューがレンダリングされます。 –