【问题标题】:Capybara issue inside a within block内部块内的水豚问题
【发布时间】:2015-01-20 06:34:12
【问题描述】:
  require "spec_helper"
  require "rails_helper"

  include Capybara::RSpecMatchers
  include Capybara::DSL

  Capybara.javascript_driver = :webkit

  feature "Course", :type => :feature do
    scenario "Get index and search for course types", js: true do

      visit "/courses"       
      within("//body") do
        find(:xpath, "//input[@id='course_type_id_1']").click
        find(:xpath, "//div[@class='course-right-sec']")

        expect(page).to have_content('65,171 courses')
        expect(page).to have_content('Fundamentals of Design')
      end
    end
  end

上面的代码我面临的问题是,当我在一个 inside 块中找到一个特定的 div 时,该 div 的 id 是否正确,它是否通过了测试。

【问题讨论】:

  • 你解决了吗?因为我也遇到了在块内查找的问题......

标签: ruby-on-rails rspec capybara integration-testing


【解决方案1】:

哇,这对一项测试有很多期望。虽然一些测试纯粹主义者会说每​​个测试只有一个期望,但需要加载 js 的功能测试非常耗时,但您可能在这里做的太多了。一种合乎逻辑的方法是为您的每门课程进行一次功能测试;这样一来,您对每个人都有几个期望。

这不是您问题的确切解决方案,但它将有助于将来的调试。

您的所有期望都基于 have_content 匹配器。基本上,如果它在加载的 DOM 中,那么所有这些期望都会过去,无论您的查找和点击事件如何。 IE。 find(id).click

如果您对这里发生的事情以及您尝试测试和反对的内容提供更多背景信息,我可能会提供更多帮助。附加您的 js 也会有所帮助。

【讨论】:

  • 问题是,如果没有找到具有正确 id 的特定 div,则无论测试通过的正确 id 是什么,测试都会失败。它不应该以错误的 div id 传递。
猜你喜欢
  • 1970-01-01
  • 2016-12-14
  • 1970-01-01
  • 1970-01-01
  • 2019-08-18
  • 1970-01-01
  • 2016-11-17
  • 2019-01-23
  • 1970-01-01
相关资源
最近更新 更多