【问题标题】:Capybara testing of sinatra app failsCapybara 对 sinatra 应用程序的测试失败
【发布时间】:2012-06-11 22:04:32
【问题描述】:

我正在尝试使用 minitest 和 capybara 测试 sinatra 应用程序,但在所有使用 capybara 功能(如 fill_in 或 visit)的测试中都出现了几个错误。

test_index 给出:

用于#的未定义局部变量或方法“app”

test_create_user 给出:

无效的表达式:.////form[@id = 'register']

test_same_email 给出:

找不到css“#register”

test_login 给出:

无法填写,没有带id的文本域、文本区或密码域, 找到姓名或标签“电子邮件”

有什么可能出错的建议吗?

test.rb

require "test/unit"
require "minitest/autorun"
require "capybara"
require "capybara/dsl"
require "rack/test"
require_relative "../lib/kimsin.rb"

ENV["RACK_ENV"] = "test"

class KimsinTests < Test::Unit::TestCase
  include Rack::Test::Methods
  include Capybara::DSL
  Capybara.app = Sinatra::Application

  def test_index
    visit "/"
    assert stuff..
  end

  def test_create_user
    visit "/user/new"
    within "//form#register" do
      fill_in :username, :with => "first@company.com"
      fill_in :password, :with => "abC123?*"
      fill_in :confirm_password, :with => "abC123?*"
      click_link "Register"
    end
    assert stuff..
  end
end

我在 Windows 7 上使用 cygwin 1.7.15-1、rvm -v 1.14.1(稳定)和 ruby​​ -v 1.9.2p320。

----更新----

最后我通过采纳史蒂夫的建议完成了测试:

within "form#register" do
fill_in "email", :with => "first@company.com"
click_button "Register"

并使用 capybara_minitest_spec 断言响应:

page.must_have_content "Password"
page.must_have_button "Register"

【问题讨论】:

    标签: ruby unit-testing sinatra capybara minitest


    【解决方案1】:

    我刚刚用 Webrat 回答了您最近发布的关于辛特拉的一个问题。

    Acceptance testing of sinatra app using webrat fails

    我认为这里的问题是一样的。尝试替换:

    Capybara.app = Sinatra::Application
    

    与:

    Capybara.app = Kimsin
    

    我个人会选择 Capybara 而不是 Webrat。

    【讨论】:

    • 不幸的是,错误没有改变。 Capybara.app = Kimsin.new 或上面的代码都没有做任何改变。问题可能出在我的代码(应用程序或测试)中,或者版本不匹配。
    • 我看不出test_index 出了什么问题,因为您没有包含断言代码。 test_create_user within "//form#register" do 应该是 within "form#register" do - 你似乎在这里混合了 xpath 和 css 样式表达式。最后我想你会发现 Capybara 需要选择器的字符串参数,所以 fill_in :email ... 应该是 fill_in 'email' ... 等等。
    • 所有测试(包括 webrat)都通过您的建议。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-30
    • 2021-12-17
    • 2016-08-02
    相关资源
    最近更新 更多