Как проверить сценарий, который требует JavaScript для завершения? - PullRequest
1 голос
/ 28 сентября 2011

Проект, над которым я работаю, извлекает данные из сторонних сервисов и кэширует их локально вместе со специальной информацией для моего приложения.

Мое окружение:

  • Я предоставляю механизм поиска по API поиска службы.
  • Когда пользователь впервые просматривает страницу элемента, сервер my получает информацию из службы и сохраняет ее
  • При последующих запросах браузер просто запрашивает информацию с моего сервера

.. однако .. Я хочу, чтобы информация от сторонней службы оставалась актуальной.

Мой план (обратная связь приветствуется!)

  • При последующем запросе после загрузки страницы некоторые JS пропингуют стороннюю службу для проверки обновлений
  • Если элемент был обновлен, отправьте обновление на мою серверную копию

Как это проверить?

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

У меня было немало проблем, пытаясь описать это, чтобы помочь диаграмме.

enter image description here

Технология, которую я использую: Rails / RSpec / Factory Girl / JQuery

Ответы [ 2 ]

0 голосов
/ 30 сентября 2011

Похоже, есть несколько способов проверить это, исходя из моего текущего решения.

Thoughtbot создает библиотеку под названием capybara-webkit, которая будет раскручивать webkit в фоновом режиме и отображать / запускать ваши тесты через него. Селен это другое.

github link

сообщение в блоге

вернемся к этому проекту после небольшого перерыва .. использование capybara и: js => true, кажется, работают - некоторые хитрые проблемы с синхронизацией, но в остальном хорошо идти

0 голосов
/ 28 сентября 2011

Давайте немного подумаем, чтобы решить эту проблему.

Можете ли вы обратиться к стороннему сервису с бэк-энда при запросе страницы? Затем вы снимаете зависимость от JavaScript.

Есть несколько других методов, которые лучше этого: например, поместить действие «обновить информацию об элементе» в очередь, а затем обработать его в фоновом режиме на серверной части. Это позволит сторонней службе не замедлять работу вашего сайта.

...