我正在尝试使用 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"