2012-01-16 3 views
0

Как запустить тест watir в контексте тестируемого приложения? Я бы хотел, чтобы мой тест просмотрел приложение, а затем получил доступ к ActionMailer::Base.deliveries для электронных писем или напрямую проверить модели. Вот как я понимаю, что описано here.Запуск селена/watir в контексте сервера rails

UPDATE: они, вероятно, используют Capybara, чтобы иметь возможность подключаться к массиву электронной почты и быть в контексте «сервера», который создается только для теста.

ответ

0

Я предлагаю проверить документацию Rails модульного тестирования, то написание простого Rails тест, который запускает приложение - то попробуйте добавить одну или две строки Watir кода доступа приложение:

http://guides.rubyonrails.org/testing.html

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

Я никогда не использовал Watir внутри теста Rails, но я не понимаю, почему это не сработает.

+0

Похоже, что это не про просто загружая контекст Rails, он выполняется точно в контексте сервера. Как еще вы могли читать эти письма? Я думаю, что другая возможность заключается в том, что они запускают что-то вроде «ActionDispatch :: IntegrationTest» с «Capybara», где «сервер» запускается из вашего тестового набора. – m33lky

0

Watir - это ведущие браузеры для автоматизации функциональных испытаний. Можно предположить, что вы можете использовать его для модульного тестирования содержимого пользовательского интерфейса верхнего уровня, но чаще всего в контексте «единичного теста», который будет выполняться с использованием эмуляции безглавых браузеров, Capybara, celerity или watir-webdriver, используя опцию безглавых, для скорости работы, так как вождение фактического браузера может быть медленным даже с быстрым браузером, таким как хром.

В большинстве случаев люди используют Watir для более функциональных тестов, часто из рамок тестового бегуна, таких как Cucumber, иногда Rspec в зависимости от ваших потребностей. Вы можете объединить это с другим кодом ruby ​​для доступа или создания тестовых данных, чтобы проверить, что что-то сделало его в БД из пользовательского интерфейса, но все в драгоценности Ватира связано с браузером и взаимодействует с ним так же, как и человек, и вождение браузер является его функцией в рамках набора инструментов, которые вы можете использовать.

0

У меня была такая же потребность и нашла следующее решение: https://stackoverflow.com/a/9687562/90741. Я воспроизвожу его здесь, так как связанный вопрос, кажется, мертв, с его владельцем ...

У меня была такая же потребность (Watir + RSpec), но проблема в том, что по умолчанию нет стека стойки по умолчанию во время тесты ...

я нашел это решение:

в spec_helper.rb:

HTTP_PORT = 4000 

test_instance_pid = fork do 
    exec 'unicorn_rails -E test -p %d' % HTTP_PORT 
end 

at_exit do 
    Process.kill "INT", test_instance_pid 
    Process.wait 
end 

Какой начать стек тест один раз для всех тестов спецификации, и убить его в конце. (В данном примере я использую единорог, но мы можем себе представить, используя любой другой сервер)

В спецификации, я повторно использовать HTTP_PORT константу построить URL:

browser.goto "http://localhost:#{HTTP_PORT}/" 
Смежные вопросы