错误:定义方法(名称){__memoized.fetch_or_store(名称){超级(&nil)}}

时间:2019-03-08 15:43:29

标签: ruby-on-rails ruby swagger

我在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

1 个答案:

答案 0 :(得分:1)

问题出在let(:post)与动词REST帖子发生冲突,我更改了文章和用户let(:article)的模型文章的名称,这解决了问题