1

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

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1