【发布时间】:2011-04-05 00:48:23
【问题描述】:
我的功能测试出现以下问题。
mrbernz:mylife bernardleung$ ruby 测试/功能/forums_controller_test.rb .....
1) 错误:
test_should_create_forum(ForumsControllerTest):
ActiveRecord::StatementInvalid: Mysql::BadFieldError: 未知列 'id:3 name' in 'field list': INSERT INTO roles (id, id:3 name) VALUES (707834473, 'Moderator')
错误点的堆栈跟踪如下...
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in gem_original_require'
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:inrequire'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:158:in require'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:265:inrequire_or_load'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:224:in depend_on'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:136:inrequire_dependency'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.8/lib/active_record/fixtures.rb:853:in try_to_load_dependency'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.8/lib/active_record/fixtures.rb:868:inrequire_fixture_classes'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.8/lib/active_record/fixtures.rb:865:in each'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.8/lib/active_record/fixtures.rb:865:inrequire_fixture_classes'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.8/lib/active_record/fixtures.rb:848:in fixtures'
./test/functional/../test_helper.rb:35
test/functional/forums_controller_test.rb:1:inrequire'
测试/功能/forums_controller_test.rb:1
无法加载roles_user,根本原因没有加载这样的文件--roles_user
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in gem_original_require'
/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:inrequire'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:158:in require'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:265:inrequire_or_load'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:224:in depend_on'
/Library/Ruby/Gems/1.8/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:136:inrequire_dependency'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.8/lib/active_record/fixtures.rb:853:in try_to_load_dependency'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.8/lib/active_record/fixtures.rb:868:inrequire_fixture_classes'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.8/lib/active_record/fixtures.rb:865:in each'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.8/lib/active_record/fixtures.rb:865:inrequire_fixture_classes'
/Library/Ruby/Gems/1.8/gems/activerecord-2.3.8/lib/active_record/fixtures.rb:848:in `fixtures'
测试/功能/forums_controller_test.rb:4
我的 forums_controller_test.rb 如下所示(无论如何是前几行)
require File.dirname(__FILE__) + '/../test_helper'
class ForumsControllerTest < ActionController::TestCase
fixtures :forums, :users, :roles, :roles_users
test "should get index" do
get :index
assert_response :success
assert_not_nil assigns(:forums)
end
我不明白为什么它抱怨“roles_user”,因为我在任何地方都没有要求它,而我要求或声明的是“roles_users”,这是我拥有的一张表!
mysql> show tables;
+-----------------------+
| Tables_in_mylife_test |
+-----------------------+
| articles |
| categories |
| forums |
| pages |
| posts |
| roles |
| roles_users |
| schema_migrations |
| topics |
| users |
+-----------------------+
10 rows in set (0.15 sec)
帮忙?!
【问题讨论】:
-
你的灯具可能有问题?
-
你有引用
roles_user的夹具吗? -
不,我的灯具中没有任何引用角色用户的东西!我对我的整个项目进行了搜索,并且在我的错误日志中没有任何其他地方对角色用户的引用!
-
你的路线中有没有类似
map.resources :role_user的东西 -
对于角色和用户,我的路线看起来像这样。 map.resources :roles map.resources :users, :member => { :enable => :put } do |users| users.resources :roles end 至于缺少迁移,根据列表,我的数据库看起来很好,所以我有点困惑......我也很困惑,因为我的手动测试只适用于我的自动化功能测试不......?
标签: ruby-on-rails ruby unit-testing