Rails 3 in Actionの第 13 章で説明されているのと同様の方法で、Rails API の仕様を作成しています。
この本では、 の結果を使用して json 応答を比較してい#to_json
ます。
expect(response.body).to eql(project.to_json)
ただし、jbuilder を使用しているため、これは機能しません。jbuilder テンプレートをレンダリングして例の応答を取得する方法が必要ですが、これまでのところ成功していません。
私のテストは spec/api ディレクトリにありtype: :api
、本で指示されているようにマークされています。Rack::Test::Method を含む :api 仕様の ApiHelper モジュールを rspec 構成に含めます (しかし、これは実際には大きな違いはないようです)。
他の rspec テストで使用されている#render
方法は機能するようですが、私の API 仕様では使用できず、その方法もわかりません。
完全な仕様例は次のようになります。
# spec/api/photos_spec.rb
require "spec_helper"
describe "Photos Api", type: :api do
let(:user) { create(:user) }
let(:token) { user.authentication_token }
let(:photo) { create(:photo) }
let(:url) { "/api/photos" }
it "should get a photo" do
get "#{url}/#{photo.id}.json", token: token
expect(response).to be_ok
expect(response.body).to eql("???") # How can I get the jbuilder output for comparison?
end
end
どんな助けでも大歓迎です。ありがとう!