2011-02-16 38 views
0

我在我的页面上有一个选择标记,我已经通过jQuery在domready上创建了一个更改事件的侦听器。在这个监听器中,我使用url中的参数将用户重定向到同一页面。黄瓜,jQuery和重定向

当我测试功能手册时,它工作得很好。

当我运行测试时,失败,重定向不起作用。

我如何使它工作?

@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?年= 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(); 
    }); 
}); 

我又有什么错?

+0

什么的黄瓜步骤定义:那我应该能看到 “time_sheet年= 2010?” 的HTML? – corroded 2011-02-18 05:08:52

回答

0

我想你已经错过了_admin的情况。在场景中使用time_sheet_admin而不是time_sheet。如果我的建议对此没有用处。

0

我通常用于测试复杂的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