Rails RSpec水豚选择不起作用

麻袋

在我的rails应用程序中,我在导航栏上有一个选择,如下所示:

<body>
  <div id="wrapper">

  <!-- Navigation -->
  <nav role="navigation" style="margin-bottom: 0">
    <div class="navbar-default sidebar hidden-sm hidden-xs" role="navigation">
      <div class="sidebar-nav">
        <ul class="nav" id="side-menu">
          <li>
            <h4 class="sidebar-title">SGPLAN</h4>
          </li>
          <li class="logo">
            <form action="#">
              <select name="" id="change_plan" class="form-control plan">
                <option value="1" id="plan_id" selected="">first </option>
                <option value="2" id="plan_id">other </option>
              </select>
            </form>
          </li>

当用户选择其他选项时,通过application.js中的javascript加载首页。

$(document).ready(function() {
    //...
    $('#change_plan').on('change', function(){
        var str = ''
        str += $( this ).val() + " ";
        setCookie("plan", str,1);
        window.location.href = "/";
    })
});

我使用rspec,capybara和capybara-webkit为此功能编写了以下测试:

require 'rails_helper'

feature "Change plan", :js do
  background do
    login_as create(:admin_user), scope: :user
    Agency.current = Agency.find_by(initials: 'SECTI').id
    FactoryGirl.create(:other_plan)
    Plan.current = Plan.find_by(name: 'first').id
  end

  scenario "User changes the current plan" do
    visit "/milestones"
    save_and_open_page
    select('other', from: 'change_plan')
    # within '#change_plan' do
    #   find("option[value='2']").click
    # end
    # find('#change_plan').find('option', text: 'other').select_option
    expect(current_path).to eq("/")
  end
end

save_and_open_page会产生html片段,如上所示。

运行测试的结果如下:

Failures:

  1) Change plan User changes the current plan
     Failure/Error: expect(current_path).to eq("/")

       expected: "/"
            got: "/milestones"

       (compared using ==)
     # ./spec/features/plans/change_plan_spec.rb:19:in `block (2 levels) in <top (required)>'

Finished in 1 minute 1.71 seconds (files took 2.04 seconds to load)
1 example, 1 failure

如果我在测试中使用find('#change_plan')...find("option...")(按照注释行)而不是选择,则结果是相同的。

我的版本如下(来自Gemfile.lock):

capybara (2.7.1)
capybara-webkit (1.11.1)
database_cleaner (1.5.3)
factory_girl_rails (4.7.0)
rails (4.2.5)
rspec-core (3.5.4)
rspec-expectations (3.5.0)
rspec-mocks (3.5.0)
rspec-rails (3.5.2)

ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-linux]

我需要做些什么才能使此测试起作用?我应该使用其他测试平台吗?我们相对致力于rspec,但对水豚则相对较少。

更新

我终于在托马斯的帮助下并使用了他提供的多个建议来完成这项工作。

  1. capybara webkit驱动程序出现JavaScript错误。
  2. 我尝试了硒驱动程序,但在访问/里程碑步骤中遇到了503错误。
  3. 然后,我切换到poltergeist驱动程序,发现等待行为也是一个问题-因此我不得不使用have_current_path。
托马斯·沃尔波尔

您不应该将eq匹配器与current_path一起使用,因为它没有等待/重试的行为。这意味着您要在页面有时间更改之前检查路径。而是使用Capybara提供的have_current_path匹配器

expect(page).to have_current_path('/')

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

水豚测试不起作用,而实际的应用程序可以正常工作。在Rails 5中反应前端

来自分类Dev

水豚选择(“单选按钮”)不起作用

来自分类Dev

Rails选择助手不起作用

来自分类Dev

水豚poltergeist单击不起作用

来自分类Dev

水豚fill_in不起作用

来自分类Dev

选择选项在使用MaterializeCSS的Rails中不起作用

来自分类Dev

Rails 4 jQuery选择器不起作用

来自分类Dev

Rails 4 jQuery选择器不起作用

来自分类Dev

Rails选择“下拉”,但Controller中的内容不起作用

来自分类Dev

选择选项在使用MaterializeCSS的Rails中不起作用

来自分类Dev

Rails,rspec:使用“ send()”动态生成控制器规格的水豚URL

来自分类Dev

Rspec的“ on::update”测试验证不起作用(Rails4 / Rspec 3)

来自分类Dev

rails --api不起作用

来自分类Dev

Rails渲染不起作用

来自分类Dev

rails --api不起作用

来自分类Dev

从水豚/硒“监听” AJAX呼叫-Rails

来自分类Dev

使用rspec-rails 3.0.1和Shoulda测试关联不起作用

来自分类Dev

带RSpec的水豚-选择框选项

来自分类Dev

Rspec和水豚选择值

来自分类Dev

Rails 4验证不起作用

来自分类Dev

Rails:捆绑安装不起作用

来自分类Dev

rails 5 db:重置不起作用

来自分类Dev

邮件在Rails 4.1中不起作用

来自分类Dev

Rails DataTables添加行不起作用

来自分类Dev

rails .order方法不起作用

来自分类Dev

Javascript在Rails中不起作用

来自分类Dev

Rails Cancan黑子搜索不起作用

来自分类Dev

Rails验证-重定向不起作用

来自分类Dev

rails bootstrap Javascript include不起作用