我正在构建一个Rails后端API,我有一个接收发布请求的控制器。我使用rspec来调用端点,到目前为止看起来它正常工作。但是我无法想象我的回答。 (控制器工作并呈现正确的JSON)。我的规格看起来像这样:
require "spec_helper"
require "rspec_api_documentation/dsl"
resource "Data" do
header "Accept", "application/json"
header "Content-Type", "application/json"
header "Host", "public.example.com"
describe "receives POST request with body", :type => :request do
params = { type: ["1", "2", "3"], fromDate: "26/05/2015", toDate: "30/05/2015" }
post "/api/v1/data/totals", params.to_json
end
end
此测试通过,但我似乎无法检索呈现的JSON。我已尝试在描述块中添加以下内容:
puts response_body
puts response.body
puts page.body
有谁知道正确的语法?
答案 0 :(得分:1)
在describe
区块内,您的测试需要在it
或specify
区块内。
修改 - 我看到你正在使用rspec_api_documentation gem。我对此并不熟悉,但看起来你将两种语法混合在一起 - 宝石的DSL和RSpec自己的DSL。 gem的自述文件未显示正在使用的describe
。我建议坚持使用普通的RSpec直到你通过,然后尝试介绍宝石。
答案 1 :(得分:0)
所以我在朋友的帮助下弄清楚了。这是使用rspec api文档/ dsl:
的正确语法require "spec_helper"
require "rspec_api_documentation/dsl"
resource "Data" do
header "Accept", "application/json"
header "Content-Type", "application/json"
header "Host", "public.example.com"
describe "Post a request to totals" do
parameter :type,"selected data type"
parameter :fromDate, "start date"
parameter :toDate, "end date"
let(:type) { ["1", "2", "3"] }
let(:fromDate) { "26/05/2015" }
let(:toDate) { "30/05/2015" }
post "/api/v1/data/totals" do
let(:raw_post) { params.to_json }
example_request "with a body" do
expect(response_body).to include(fromDate, toDate)
expect(status).to eq(200)
end
end
end
end