我在Rails中大张旗鼓地运行规范并出现此错误
define_method(name){__memoized.fetch_or_store(name){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
答案 0 :(得分:1)
问题出在let(:post)与动词REST帖子发生冲突,我更改了文章和用户let(:article)的模型文章的名称,这解决了问题