#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