zoukankan      html  css  js  c++  java
  • Rails Rspec 单元测试 验证接口返回格式

    如何在单元测试中测试接口返回的字段?

    如果我们有一个api的entity为 employment.rb

    # frozen_string_literal: true
    
    module API::Entities::BorrowerEntities
      class Employment < API::Entity
        param :in_type_id, safe_path: %i[primary_income_source id]
        param :aaa_type, safe_path: %i[employed_code]
        param :started_with_employer, safe_path: %i[started_with_employer]
      end
    end

     let(:default_headers) { { 'CONTENT_TYPE' => 'application/json' } }

    it 'xxx xxx' do

      headers = { 'Authorization' => bearer_token_for(xixi.account) }.merge(default_headers)

      put '/api/v1/tester/aaa', sample_entity_with('aaa_type' => 'Self-aaa').to_json, headers

      expected_presenter = API::Entities::BorrowerEntities::Employment.represent(tester.account.current_aaa_detail)

      expect(response_body).to eq(JSON.parse(expected_presenter.to_json))

    end

    详细的例子:

    Grape API Entity has a "represent" method that can be useful in specs scenarios when we expect some object to be presented with some specific entity, for example when we have:
    
    present user, with: API::Entities::User
    
    We are actually saying:
    
    API::Entities::User.represent(current_user) and this will give us an object like this:
    #<API::Entities::User:0x00007fe6aab82868
     @object=
      #<User:0x00117fe6aab82ee8
       id: 35345,
       name: "Test",
       email: "test@example.com",
       created_at: Mon, 14 Oct 2019 21:57:54 UTC +00:00,
       updated_at: Mon, 14 Oct 2019 21:57:54 UTC +00:00,
     @options={}>
    
    Then in our spec scenario, we can call to_json from here and use it as a expected from the response of an API call like:
    get '/api/v3/user'
    expected_json = API::Entities::User.represent(current_user).to_json
    expect(response.body).to eq(expected_json)
  • 相关阅读:
    剑指 Offer II 005. 单词长度的最大乘积
    中文编程的瓶颈
    Unity TextMeshPro 富文本格式介绍
    centos使用httpd搭建文件下载服务器教程
    开博第一天
    macOS安装brew(Homebrew国内源)
    git命令将代码导出为单个文件
    CPU虚拟化
    指令
    华为公有云服务的主要服务产品
  • 原文地址:https://www.cnblogs.com/iwangzheng/p/11682201.html
Copyright © 2011-2022 走看看