【问题标题】:Testing jquery dialog with capybara-webkit使用 capybara-webkit 测试 jquery 对话框
【发布时间】:2011-09-30 21:06:42
【问题描述】:

我想测试用户单击链接并弹出 jquery 对话框 (http://jqueryui.com/demos/dialog/) 的交互。

我想测试:

  1. 对话框出现
  2. 对话框中的文字是正确的
  3. 用户可以通过单击“x”退出

我手动测试了对话框,它可以工作,但我对如何编写实际规范很感兴趣。我想使用 Capybara-webkit 来做到这一点,但我无法找到实际使用 Capybara-webkit 的代码示例。

我正在使用 Capybara-webkit 和规范,但不是黄瓜。

【问题讨论】:

  • +1,我无法理解如何在 capybara-webkit 中使用点击事件。我的 .click() 绑定似乎不适用于测试,但可以在浏览器中使用

标签: webkit rspec integration-testing capybara jquery-dialog


【解决方案1】:

这是如何做到这一点的:

资源

安装

确保您的 Gemfile 包含 capybara-webkit、rspec-rails 和 database_cleaner:

group :development, :test do
  gem 'rspec-rails', '~> 2.7.0'
  gem 'capybara-webkit', '~> 0.7.2'
  gem 'database_cleaner', '~> 0.6.7'
end

您需要 database_cleaner,因为除了 Rack::Test 之外,数据库事务与 rspec 驱动程序不兼容:

RSpec.configure do |config|

#...

  config.use_transactional_fixtures = false

  config.before(:suite) do
    DatabaseCleaner.strategy = :truncation
  end

  config.before(:each) do
    DatabaseCleaner.start
  end

  config.after(:each) do
    DatabaseCleaner.clean
  end

end

您仍然必须在测试中使用 :js => true 标志。事实证明,这不是仅硒的功能:

describe "Something" do
  it "uses javascript", :js => true do
     pending "write a test"
  end
end

当然,require 'capybara/rspec' 并在您的 spec_helper 中设置 Capybara.javascript_driver = :webkit

#...

ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'capybara/rspec'
Capybara.javascript_driver = :webkit

#...

这应该就是让 capybara-webkit 和 rspec 启动并运行所需的全部内容。

【讨论】:

  • 感谢您的帮助。现在,我如何测试对话框中的内容(单击链接后弹出...)? page.has_selector 不起作用,因为它仍然有原始(非弹出内容)
  • 如果它是由 html 创建的对话框,那么您应该能够测试 page.has_content 或其他东西...使用 :js => true... 如果是 JS confirm() 那么我不是完全确定
猜你喜欢
  • 1970-01-01
  • 2017-05-18
  • 2013-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-23
  • 1970-01-01
  • 2012-03-02
相关资源
最近更新 更多