огурец, JQuery и перенаправления - PullRequest
0 голосов
/ 16 февраля 2011

У меня есть тег select на моей странице, я сделал с помощью jQuery на domready слушателя для события change.В этом слушателе я перенаправляю пользователя на ту же страницу с параметром в URL.

Когда я тестирую руководство по функциональности, оно работает очень хорошо.

Когда я запускаю тест, он не проходит, перенаправление не работает.

Как я могу заставить его работать?

@javascript
  Scenario:
    When I select "2010" from "year_select"
    And I wait 5 seconds
    Then "2010" should be selected for "year_select"
    Then I should see "time_sheet?year=2010" with html

Тест не пройден, я вижу time_sheet? year = 2011 (значение по умолчанию) в моем источнике HTMLМануал вижу правильное значение.Он не обновляется через Javascript, но в соответствии с переменной года, переданной в URL (после перенаправления)

Мой код jQuery:

jQuery(document).ready(function(){
  var yearSelect = jQuery("#year_select");
  yearSelect.change(function(){
    window.location = "/time_sheet_admin?year="+yearSelect.val();
  });
});

Что я делаю неправильно?

Ответы [ 2 ]

0 голосов
/ 18 февраля 2011

Что я обычно делаю для тестирования сложных вещей JS, это помещаю их в функцию, а затем проверяю, была ли вызвана эта функция:

selectChanged = function() {
  window.location = "/time_sheet_admin?year="+jQuery("#year_select").val();
}

* обратите внимание, что нет необходимости в присвоении переменной, потому что вы вызывали ее толькоодин раз.

затем в вашей функции:

Then I should see "time_sheet?year=2010" in the url

определение шага:

When /Then I should see "time_sheet?year=2010" in the url/ do |seconds|
  page.execute_script("selectChanged()") 
end
0 голосов
/ 18 февраля 2011

Я думаю, что вы пропустили _admin в сценарии. Используйте time_sheet_admin вместо time_sheet в сценарии. Если мои предложения бесполезны, извините за это.

...