Ruby - тестирование Airbourne Rspec API - PullRequest
0 голосов
/ 13 марта 2019

Я пытаюсь написать тест API, но я не могу понять, как это сделать.Я преобразовал curl в ruby ​​и получил блок, как показано ниже

require 'net/http'
require 'uri'

uri = URI.parse("https://example.com/api/v2/tests.json")
request = Net::HTTP::Get.new(uri)
request.basic_auth("test@gmail.com", "Abcd1234")

req_options = {
  use_ssl: uri.scheme == "https",
}

response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
  http.request(request)
end

Я написал тест, как показано ниже

describe 'Test to GET' do
  it 'should return 200' do
  
  expect_json_types(name: :string)
  expect_json(name: 'test')
    expect_status(200)
  end
end

Мой вопрос, как мне использовать вызов API для проверки этого.Должен ли я добавить его в отдельный файл или в тот же файл, описанный выше.Я не работал с Руби раньше и не мог найти ничего в Интернете.

1 Ответ

1 голос
/ 13 марта 2019

Вы используете бортовой , который использует rest_client для выполнения вызовов API.Чтобы использовать сопоставления в воздухе (expect_json и т. Д.), Необходимо выполнить вызов API внутри теста.Это означает, что ваш тест должен выглядеть так:

describe 'Test to GET' do
  it 'should return 200' do
    authorization_token = Base64.encode64('test@gmail.com:Abcd1234')
    get(
      "https://example.com/api/v2/tests.json",
      { 'Authorization' => "Basic #{authorization_token}" }
    )
    expect_json_types(name: :string)
    expect_json(name: 'test')
    expect_status(200)
  end
end
...