Запуск selenium / watir в контексте сервера rails - PullRequest
1 голос
/ 16 января 2012

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

ОБНОВЛЕНИЕ: Они, вероятно, используют Capybara, чтобы иметь возможность доступа к массиву электронной почты и быть в контексте "сервера", которыйсоздан только для теста.

Ответы [ 3 ]

0 голосов
/ 16 января 2012

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

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

0 голосов
/ 13 марта 2012

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

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

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

In 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}/"
0 голосов
/ 16 января 2012

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

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

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

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

...