Мокко + Огурец, чтобы высмеять ответ Net - PullRequest
0 голосов
/ 02 октября 2009

Ниже приведено приложение / models / website.rb

class Masterpiece < ActiveRecord::Base
    validates_presence_of :title, :link
    validates_uri_existence_of :link, :allow_redirect => false
end

Вторая проверка выполняется с помощью плагина Проверяет наличие URI Плагин

Ниже приведен файл features / support / mocha.rb

require 'mocha'
World(Mocha::API)

Before do
  mocha_setup
  @http_mock = mock('Net::HTTPResponse')
  @http_mock.stubs(:code => '200', :message => "OK", :content_type => "text/html", :body => '<title>Test</title><body>Body of the page</body>')
  Net::HTTP.expects(:get_response).returns(@http_mock)
  #Website.expects(:validates_uri_existence_of).returns(true)
end

After do
  begin
    mocha_verify
  ensure
    mocha_teardown
  end
end

Но когда я пытаюсь запустить функцию огурца, она попытается создать запись, и перед сохранением вышеупомянутый плагин попытается проверить по сети, чтобы получить ответ. Это хорошо.
Но когда я хочу получить его Mocked в тестовой среде, я пытаюсь использовать mocha.

Как мне написать код для проверки ответа Net или метод класса validates_uri_existence_of для беспрепятственного запуска теста ??

Ответы [ 2 ]

2 голосов
/ 03 октября 2009

Я бы порекомендовал использовать для этого Fakeweb , так как он идеально подходит для него.

2 голосов
/ 03 октября 2009

Макет должен быть подходящего класса. Попробуйте:

Net::HTTP.expects(:get_response).returns(Net::HTTPSuccess.allocate)

(Class#allocate создает экземпляр класса без вызова initialize)

...