我正在以与Rails 3 in Action的第 13 章中描述的类似方式编写 Rails api 规范。
在书中,他们使用 .json 的结果比较 json 响应#to_json
。
expect(response.body).to eql(project.to_json)
但是,我正在使用 jbuilder,所以这不起作用。我需要一种方法来呈现 jbuilder 模板并获得示例中的响应,但到目前为止还没有成功。
我的测试位于 spec/api 目录中,并type: :api
按照书中的指示进行标记。我在 rspec 配置中包含用于 :api 规范的 ApiHelper 模块,其中包括 Rack::Test::Method,(但这实际上似乎并没有太大区别)。
似乎#render
其他 rspec 测试中使用的方法可以工作,但它在我的 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
任何帮助是极大的赞赏。谢谢!