如何运行特定文件中的路径或仅运行特定路径以使用 rswag 测试 swagger

问题描述 投票:0回答:2

我有一个项目,其中许多 API 调用都是使用 rswag 定义的,以生成开放的 API 文档。 在这个项目中,我将端点路径分类在单独的 ruby 文件中。

我的问题是,当我为新端点添加新路径以生成 swagger 时,我是否需要运行所有文件和路径来测试我的文档是否正确或错误,或者是否有任何方法可以运行特定路径(示例)或文件来仅测试我新添加的 API 示例。

我们以下面的例子为例,我将其复制到 rswag github 并进行了修改。

# spec/requests/blogs_spec.rb
require 'swagger_helper'

describe 'Blogs API' do

  path '/blogs' do

    post 'Creates a blog' do
      tags 'Blogs'
      consumes 'application/json'
      parameter name: :blog, in: :body, schema: {
        type: :object,
        properties: {
          title: { type: :string },
          content: { type: :string }
        },
        required: [ 'title', 'content' ]
      }

      response '201', 'blog created' do
        let(:blog) { { title: 'foo', content: 'bar' } }
        run_test! do
             // some logics
        end
      end

      response '422', 'invalid request' do
        let(:blog) { { title: 'foo' } }
        run_test! do
             // some logics
        end
      end
    end
  end

  path '/blogs/{id}' do

    get 'Retrieves a blog' do
      tags 'Blogs', 'Another Tag'
      produces 'application/json', 'application/xml'
      parameter name: :id, in: :path, type: :string
      request_body_example value: { some_field: 'Foo' }, name: 'basic', summary: 'Request example description'

      response '200', 'blog found' do
        schema type: :object,
          properties: {
            id: { type: :integer },
            title: { type: :string },
            content: { type: :string }
          },
          required: [ 'id', 'title', 'content' ]

        let(:id) { Blog.create(title: 'foo', content: 'bar').id }
        run_test! do
             // some logics
        end
      end

      response '404', 'blog not found' do
        let(:id) { 'invalid' }
        run_test! do
             // some logics
        end
      end

      response '406', 'unsupported accept header' do
        let(:'Accept') { 'application/foo' }
        run_test! do
             // some logics
        end
      end
    end
  end
end

我只需要运行带有一些标签的测试

Creates a blog
路径。如果需要的话,我应该在这个规范文件中的哪里添加这个标签?

我在 rswag 文档中找到了以下内容。但我不知道应该在哪里添加这个标签。

# Only include tests tagged "rswag"
rake rswag:specs:swaggerize ADDITIONAL_RSPEC_OPTS="--tag rswag"

我目前正在使用以下命令在 docker-compose 文件上运行它。对此命令的任何更新也可以。

bundle exec rake rswag:specs:swaggerize

任何帮助将不胜感激。

ruby-on-rails ruby swagger rake rswag
2个回答
0
投票

如果您使用

:rswag
,请用 
--tag rswag

标记它们

0
投票

您可以使用 :tag 选项将标签添加到 RSpec 测试中。根据您的情况,您可以将 rswag 标签添加到要运行的特定测试中。具体方法如下:

post 'Creates a blog', :rswag do
  # ...
end

在此示例中,:rswag 标签添加到“创建博客”测试中。现在,当您运行命令 rake rswag:specs:swaggerize ADDITIONAL_RSPEC_OPTS="--tag rswag" 时,只会运行带有 rswag 标签的测试。

© www.soinside.com 2019 - 2024. All rights reserved.