Написание макета RSpec - PullRequest
2 голосов
/ 07 июня 2011

У меня есть код в моем проекте Ruby on rails, чтобы получить HTTP-ответ от API не-rails

приложение / модель / rest_api.rb

require "uri"
require "net/https"
require "net/http"
require "active_support"
class RestApi
  # the URL for the Twitter Trends endpoint
  @url = 'http://api.twitter.com/1/trends.json'

  def self.sampleRes
    uri =  URI.parse( @url)
    request = Net::HTTP::Get.new(uri.request_uri)
    response = http.request(request)
    return response
  end
end

Я только начал изучать Ruby on Rails и RSPEC. Может кто-нибудь помочь, пожалуйста, как я могу написать RSpec для HTTP-запроса без фактического запроса на фактический URL-адрес API (нужно немного издеваться)

1 Ответ

3 голосов
/ 07 июня 2011

Вы можете макетировать часть запроса и рассчитывать на то, что следует называть и т. Д.

mock_req = double("http request")
mock_req.should_receive(:request)
Net::HTTP::Get.should_receive(:new).and_return(mock_req)

Ваш код также может быть упрощен до:

open('http://api.twitter.com/1/trends.json').read

Вы не являетесьвыполнение какой-либо обработки ошибок, проверка статуса и т. д. (может быть, это пример кода?), но, что бы вы ни ожидали, что ваш запрос вернется, вы должны смутить / заглушить эти ожидания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...