【问题标题】:ruby rails functional test problemruby rails 功能测试问题
【发布时间】: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


【解决方案1】:

从 ForumsControllerTest 的夹具声明中删除 :roles_users。 通过将 :roles_users 指定为夹具,它试图加载一个名为 RolesUser 的模型。我假设它是一个has_and_belongs_to_many 连接表。

确保您的 users.yml 夹具具有:

user:
 roles: moderator

你的 roles.yml 夹具有:

moderator:
 name: 'Moderator'

并且id没有user.ymlroles.yml 文件中设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多