Я не могу вернуть тело api с помощью RUBY и RSPEC

#ruby #api #rspec

Вопрос:

При проверке, возвращает ли api 200 ОК, но когда я перечисляю тело API с помощью put, я не получаю список значений. Api, который я использую, взят с веб-сайта: https://reqres.in/

 **file spec_helper.rb**
require 'httparty'
require 'httparty/request'
require 'httparty/response/headers'
require  'json'

require_relative '../services/user_service.rb'

RSpec.configure do |config|
  include User
  config.expect_with :rspec do |expectations|
  expectations.include_chain_clauses_in_custom_matcher_descriptions = true
  end
  config.mock_with :rspec do |mocks|
  mocks.verify_partial_doubles = true
  end
  config.shared_context_metadata_behavior = :apply_to_host_groups
  Kernel.srand config.seed
end


**file user_service.rb**
module User
  include HTTParty
  base_uri 'https://regres.in'
  format :json
end

describe 'agrupando os metodos de verbo GET' do

  it 'my first test - list users' do
    @users = User.get('/api/users?page=2')
    puts @users  ***// my problem is here!!!***
    puts expect(@users.code).to eq(200)
  end
end
 

Комментарии:

1. Если вы pp @users , то каков фактический результат?

2. Сбой/Ошибка: pp @users JSON::Ошибка синтаксического анализа: 809: неожиданный токен в»<! DOCTYPE html PUBLIC «-//W3C//DTD HTML 4.01//RU» » w3.org/TR/html4/strict.dtd «> ><html>

3. Это означает, что вы получаете HTML-страницу, а не объект JSON. Вероятно, вам потребуется выполнить другой вызов или конечную точку или использовать другой метод для извлечения кода состояния HTTP из вашего запроса GET.

4. К сожалению, я не нахожу решения для этого.

5. Несмотря на то, что это не очень хорошая идея-делать реальные запросы в тестах… Вы можете попробовать использовать curl или браузеры, чтобы открыть URL-адрес, чтобы сначала увидеть фактические результаты, или прочитать документацию поставщика API, чтобы узнать, как получить ответ JSON от API