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