Мой код создает GitHub Gist, используя GitHub API. После создания сущности API возвращает мне код состояния. Если код «201», суть была создана. Но если это «400», то произошла ошибка. В моем коде переменная, которая сохраняет это состояние: response_status
Это мой код:
require 'net/http'
require 'json'
require 'uri'
class Gist
attr_reader :response_status
attr_reader :try_again
def initialize(filename,description,state,content)
@filename = filename
@description = description
@state = state
@content = content
end
def post(uri, request)
request.basic_auth("my_username", "my_token")
request.body = JSON.dump({
"description" => @description,
"public" => @state,
"files" => {
@filename => {
"content" => @content
}
}
})
req_options = { use_ssl: uri.scheme == "https" }
begin
response = Net::HTTP.start(uri.hostname, uri.port, req_options) do |http|
http.request(request)
end
json = response.body
parsed = JSON.parse(json)
@response_status = "#{ response.code }"
if @response_status == "201"
puts "Tu gist se ha creado con exito. La URL de su gist es: "+ parsed["url"]
end
rescue SocketError => se
puts "Ha ocurrido un error de conexión. Quiere intentar nuevamente?"
@try_again = gets.chomp.capitalize
end
end
end
loop do
filename= gets.chomp
if File.exist?("#{filename}")
description = gets.chomp
state = gets.chomp.capitalize
if state == "Si"
state = true;
elsif state == "No"
state = false;
end
open(filename, "r") { |file| @contenido = file.read() }
content = @contenido
uri = URI.parse("https://api.github.com/gists")
request = Net::HTTP::Post.new(uri)
gist = Gist.new(filename,description,state,content)
gist.post(uri, request)
break if gist.response_status == "201"
break if gist.try_again == "No"
else
puts "The file does not exist"
continue = gets.chomp.capitalize
break if continue == "No"
end
end
Я хочу тестировать тестовые примеры, используя rspe c, но я не понял.
Мне пришло в голову как тестовый случай, чтобы создать Gist. Например, я подумал о том, чтобы проверить, равна ли переменная, которая возвращает состояние Gist, «201», но у меня это не сработало.
Это мой файл rspe c:
require './git_clases.rb'
RSpec.describe Gist do
describe "#Gist" do
it "#Gist created" do
expect(response_status)==("201")
end
end
end