Я написал небольшую программу, которая использует Mechanize для перемещения по сайту.Как протестировать рубиновое приложение, которое использует mechanize
Я хочу написать тесты для него, но не хочу, чтобы он фактически отправлялся на сайт каждый раз, когда я запускал тесты. Я хотел бы издеваться над Интернетом, так что, когда он перейдет на какой-либо сайт, он просто возвращает сохраненные результаты.
Вот небольшой пример, притворись, что мой код предназначен для того, чтобы вытащить ссылки с главной страницы google, поэтому я пишу тест, чтобы убедиться, что первая ссылка, найденная моим кодом, имеет текст «Изображения». Я мог бы написать что-то вроде этого:
require 'rubygems'
require 'mechanize'
require 'test/unit'
def my_code_to_find_links
google = WWW::Mechanize.new.get('http://www.google.com')
# ...
# some code to figure out which liks it wants
# ...
google.links
end
class TestGoogle < Test::Unit::TestCase
def test_first_link_is_images
assert_equal 'Images' , my_code_to_find_links.first.text
end
end
Как издеваются google.com, так что я могу проверить my_code_to_find_links без всех накладных фактически доступ в Интернет?
благодаря -Josh
Спасибо, это сработало для меня. Вот решение, показывающее рабочий пример: http://github.com/JoshCheek/Play/tree/master/mocking-the-internet/ –