【发布时间】:2011-06-27 18:28:40
【问题描述】:
尝试使用 shoulda 和 rails 3 编写一个简单的单元测试。
test/unit/user_test.rb
class UserTest < Test::Unit::TestCase
should validate_presence_of(:password, :on => :create)
should validate_presence_of(:handle, :email)
should validate_confirmation_of(:password)
should validate_length_of(:handle, :within => 6..15)
should validate_uniqueness_of(:handle)
should validate_format_of(:handle, :with => /\A\w+\z/i)
should validate_length_of(:email, :within => 6..100)
end
Gemfile
的相关部分group :test do
gem 'shoulda'
gem 'rspec-rails', '2.0.0.beta.12'
end
当我尝试使用 rake test --trace 运行它时,我收到以下错误:
** Execute test:units
/Users/removed/removed/removed/app_name/test/unit/user_test.rb:5: superclass mismatch for class UserTest (TypeError)
from /Library/Ruby/Gems/1.8/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:239:in `require'
from /Library/Ruby/Gems/1.8/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:239:in `require'
from /Library/Ruby/Gems/1.8/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:227:in `load_dependency'
from /Library/Ruby/Gems/1.8/gems/activesupport-3.0.7/lib/active_support/dependencies.rb:239:in `require'
from /Library/Ruby/Gems/1.8/gems/rake-0.9.2/lib/rake/rake_test_loader.rb:9
from /Library/Ruby/Gems/1.8/gems/rake-0.9.2/lib/rake/rake_test_loader.rb:9:in `each'
from /Library/Ruby/Gems/1.8/gems/rake-0.9.2/lib/rake/rake_test_loader.rb:9
from /Library/Ruby/Gems/1.8/gems/rake-0.9.2/lib/rake/rake_test_loader.rb:5:in `each'
from /Library/Ruby/Gems/1.8/gems/rake-0.9.2/lib/rake/rake_test_loader.rb:5
我理解错误,我只是不知道在哪里定义另一个 UserTest 类,这给了我这个问题。有什么想法吗?
迈克
【问题讨论】:
-
find . | xargs grep -l UserTest返回什么?从项目的根目录运行它。 -
哇,我是个白痴——原来我已经将这个单元测试中的代码复制到另一个单元测试中,因此定义了 UserTest 两次。非常感谢!
-
我猜这是一个比较常见的错误;)
标签: ruby ruby-on-rails-3 unit-testing shoulda