我在Rails中使用swagger运行规范,并有此错误。
Define_method(名称){__memoized.fetch_or_store(名称){ super(&nil) }}
这是我在post_spec.rb中的代码
require 'swagger_helper'
describe 'Fedaby API' do
path '/posts' do
get 'Get all post' do
tags 'Posts'
consumes 'application/json', 'application/xml'
produces 'application/json'
response '200', 'Array with all post' do
run_test!
end
end
end
path '/posts' do
post 'Create post' do
tags 'Posts'
consumes 'application/json', 'application/xml'
produces 'application/json'
parameter name: :post, in: :body, schema: {
type: :object,
properties: {
title: { type: :string },
body: { type: :string },
vote: { type: :integer },
image: { type: :string },
user_id: { type: :integer }
}
}
response '201', 'Post created' do
let(:post) { { title: 'test', body: 'test_body', vote: 0, image: 'test_image', user_id: 1 } }
run_test!
end
response '422', 'invalid request' do
let(:post) {{ title: 'test' }}
run_test!
end
end
end
end
失败
Failures:
1) Fedaby API /posts post Post created returns a 201 response
Failure/Error: define_method(name) { __memoized.fetch_or_store(name) { super(&nil) } }
ArgumentError:
wrong number of arguments (given 2, expected 0)
我使用的是gem rspec-rails和rswag specs。
发布于 2019-03-08 10:01:57
问题在于let(: post )与动词REST有冲突,我更改了文章的模型帖子名称和用户let(:文章),从而解决了问题。
https://stackoverflow.com/questions/55066550
复制