我正在写请求规格,并且在测试api中响应json formate时遇到问题。我使用水豚和制造者,这里是我的代码,我想...如何测试请求规格的API响应的键和值
context 'discounts in api' do
let(:user) { Fabricate(:user, activated: true) }
let(:api_token) { user.api_token }
before { visit api_url_for('/v1/discount_coupons', api_token) }
it 'returns coupons collection' do
Fabricate(:discount_coupon, code: 'Discount One', global: true)
save_screenshot("tmp/capybara/screenshot-#{Time::now.strftime('%Y%m%d%H%M%S%N')}.png")
save_and_open_page
expect(json_response['total_records']).to eq 1
expect(json_response['total_pages']).to eq 1
expect(json_response['page']).to eq 0
expect(json_response['discount_coupons'].size).to eq 1
expect(json_response['discount_coupons'][0]['code']).to eq 'Discount One'
end
end
我获得性反应是这
{"discount_coupons":[{"id":11,"code":"Discount One","type":"DiscountPercentage","amount_off":1.5,"global":true,"expires_on":null,"vendors":[]}],"page":0,"total_pages":1,"total_records":1}
和错误去阻止我的一个运行成功测试,
Failure/Error: expect(json_response['total_pages']).to eq 1
NoMethodError:
undefined method `body' for nil:NilClass
我想我的期望json_response是错误的或缺少的东西,可以somone帮助我这样做英俊的方式,暗示我该如何测试使用键和值。测试一个API
你为什么要用水豚做测试API?水豚进行整合测试。我认为你应该使用控制器测试来测试API。 – gotva
只要您的行为测试人员是水豚,并且您想要测试请求内容,就可以使用rspec完成集成测试。 – tebayoso