我对user.rb的原始测试如下所示:
require "test/unit"
require "minitest/autorun"
require "rack/test"
require_relative "../lib/kimsin.rb"
ENV['RACK_ENV'] = 'test'
class UserTests < Test::Unit::TestCase
include Rack::Test::Methods
include Kimsin
def app
Sinatra::Application
end
def test_user
@user = User.create :username => "barerd", :password => "abcdef"
get "/users"
assert_equal @user.username, "barerd"
refute_match @user.password, "abcdef"
end
end
由于没有User类,测试运行并且显然失败了。当我添加如下的User类时:
module Kimsin
require "data_mapper"
require "dm-migrations"
DataMapper.setup :default, "sqlite:///users.db"
class User
include DataMapper::Resource
include BCrypt
property :id, Serial
property :username, String, :required => true
property :password, String, :required => true
property :salt, String, :default => "876587349506434245565664566"
property :crypto, String, :default => BCrypt::Password.create password + salt
end
User.auto_migrate!
end
它抛出了“没有测试”。错误。实际上,不仅这一个而且所有测试现在都抛出相同的错误。我怀疑这一般与ruby有关,因为它发生在我安装了dm-core之后,并且在开始时它抛出了一个错误:
“加载RubyGems插件时出错”/home/barerd/.rvm/gems/ruby-1.9.3-p125/gems/rubygems-bundler-0.2.8/lib/rubygems_plugin.rb“:无法加载此类文件 - rubygems_bundler / rubygems_bundler_installer(LoadError)“
但是当我尝试运行其他应用程序的测试时,它们都运行良好。 我顺便在Windows 7上使用rvm 1.11.6(稳定版)和ruby 1.9.3p125(2012-02-16修订版34643)[i386-cygwin]。任何错误的线索?
需要注意的是,核心模块文件kimsin.rb如下:
require "sinatra"
require "erb"
require "bcrypt"
require_relative "../lib/kimsin/version"
require_relative "../lib/kimsin/user"
use Rack::Session::Pool, :expire_after => 2592000
set :session_secret, "n9c0431qt043fcwo4ponm3w5483qprutc3q9pfw3r0swaypedx2qafec2qdomvuj8cy4nawscerf"
module Kimsin
get "/" do
title = "Kimsin?"
erb :index, :locals => {:title => title}
end
end