1

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

test_index 给出:

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

test_create_user 给出:

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

test_same_email 给出:

找不到css“#register”

test_login 给出:

无法填写,找不到带有 ID、名称或标签“电子邮件”的文本字段、文本区域或密码字段

关于可能出错的任何建议?

测试.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"
4

1 回答 1

0

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

使用 webrat 对 sinatra 应用程序的验收测试失败

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

Capybara.app = Sinatra::Application

和:

Capybara.app = Kimsin

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

于 2012-06-16T20:31:40.657 回答