首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >API请求规范与请求规范

API请求规范与请求规范
EN

Stack Overflow用户
提问于 2019-07-04 22:57:13
回答 1查看 271关注 0票数 1

我是一名测试新手,正在使用RSpec进行日常Rails测试。

基本上有两个请求规范文件-一个用于API:

代码语言:javascript
复制
# spec/requests/projects_api_spec.rb

describe 'Projects API', type: :request do
  it 'creates a project' do
    user = FactoryBot.create(:user)
    project_attributes = FactoryBot.attributes_for(:project)

    expect {
        post api_projects_path, params: {
          user_email: user.email,
          user_token: user.authentication_token,
          project: project_attributes
        }
    }.to change(user.projects, :count).by(1)

    expect(response).to have_http_status(:success)
  end
end

另一种是控制器规格的替换:

代码语言:javascript
复制
# spec/requests/projects_spec.rb

RSpec.describe "Projects", type: :request do
  context "as an authenticated user" do
    before do
      @user = FactoryBot.create(:user)
    end

    context "with valid attributes" do
      it "adds a project" do
        project_params = FactoryBot.attributes_for(:project)
        sign_in @user
        expect {
          post projects_path, params: { project: project_params }
        }.to change(@user.projects, :count).by(1)
      end
    end
  end
end

我们不能只有一个集成测试或请求规范吗?

EN

回答 1

Stack Overflow用户

发布于 2019-07-05 00:15:35

它们测试不同的端点(api_projects_pathprojects_path),并具有不同的授权方法。

即使测试(这里的“测试”是针对单独的测试,也就是it块)看起来几乎是相同的--从长远来看,它们可能会有分歧。对于API来说,保留行为是很重要的。至于文件组织-当然,这些文件可以放在单个文件中,并共享一些常见的设置(遵循DRY原则)。

但另一方面-为了更好的api分离和稳定性,一些复制-粘贴-编程是可以接受的-这样您就不太可能在将来实现对非api路径的某些更改时无意中更改api测试。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56890486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档