0

我正在做一个团队项目,我们都是 rswag 的新手,我们使用 JWT 令牌作为身份验证,主要是基本的类似 crud 的控制器。我很难弄清楚 rswag,我应该记录什么,不记录什么,我们已经用 rspec 完成了测试文件。我有一个 /api/activities 端点,其中一个 GET 请求将返回一个带有一系列活动的 JSON 响应,我的问题是,我希望我的 rswag“试试看”选项返回我 5 个活动或其他东西,我有尝试为此使用 factoryBot 但无济于事(我已经在 rspec 文件中完成了此操作,我只是不知道如何正确与 rswag 交互,将创建命令放在哪里,是否在测试数据库中创建数据或在我的开发数据库中,它是否显示来自我的开发数据库或测试数据库的数据?)

无论如何,如果你们中的一些更有经验的人可以为我提供一个很好的指导,我会非常感激,并且还可以通过“试用”选项帮助我返回一系列活动。这就是我到目前为止所拥有的。

require 'swagger_helper'

RSpec.describe '../integration/api/activities', type: :request do
  describe 'Activities' do
    path '/api/activities' do
      get 'Lists all activities' do
        tags 'activities'
        produces 'application/json'

        let(:create_activities) { create_list(:activity, 10) }
        response '200', 'lists activities' do
          let(:id) { Activity.first.id }
          schema type: :object,
                 properties: {
                   activities: {
                     type: :array,
                     items: {
                       properties: {
                         id: { type: :integer },
                         name: { type: :string },
                         content: { type: :string },
                         image: { type: :string }
                       },
                       required: %w[id name content]
                     }
                   }
                 }
          run_test!
        end
      end
    end
  end
end

你建议我如何解决这个问题?你会怎么做?这里没有真正的“失败”场景,你要么得到一个充满活动的数组,要么得到一个空数组,这个端点不使用授权。我的控制器有一个基本的

@activities = Activity.all
render json: @activities

另外,这是我现在的 swagger_helper.rb。

require 'rails_helper'

RSpec.configure do |config|
  config.swagger_root = Rails.root.join('swagger').to_s

  config.swagger_docs = {
    'v1/swagger.yaml' => {
      openapi: '3.0.1',
      info: {
        title: 'API V1',
        version: 'v1'
      },
      paths: {},
      servers: [
        {
          url: 'http://localhost:3000',
          variables: {
            defaultHost: {
              default: 'www.example.com'
            }
          }
        }
      ]
    }
  }
  config.swagger_format = :yaml
end
4

0 回答 0