проблема функциональных испытаний рельсов - PullRequest
0 голосов
/ 28 августа 2010

У меня следующая проблема с моим функциональным тестом.

mrbernz: mylife bernardleung $ ruby ​​test / функциональный / forums_controller_test.rb .....

1) Ошибка: test_should_create_forum (ForumsControllerTest): ActiveRecord :: StatementInvalid: Mysql :: BadFieldError: Неизвестный столбец 'id: 3 name' в 'списке полей': INSERT INTO roles (id, id:3 name) VALUES (707834473, 'Moderator')

Трассировка стека точек ошибок следующим образом ...

/ Библиотека / Ruby / Сайт / 1.8 / rubygems / custom_require.rb: 31: в gem_original_require' /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in require ' /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:in require_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:in require_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:in require_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:in require_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:in require ' Тест / функционал / forums_controller_test.rb: 1 Невозможно загрузить role_user, основная причина, по которой такой файл не загружается - role_user

/ Библиотека / Ruby / Сайт / 1.8 / rubygems / custom_require.rb: 31: в gem_original_require' /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in require ' /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:in require_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:in require_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:in require_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:in require_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

Мой forum_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

Я не понимаю, почему он жалуется на 'role_user', поскольку я нигде не спрашиваю об этом, и то, что я прошу или объявляю, это 'role_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)

помощь?!

1 Ответ

0 голосов
/ 29 августа 2010

Удалить: role_users из объявления фикстуры в ForumsControllerTest. Указывая: role_users в качестве фиксатора, он пытается загрузить модель с именем RolesUser. Я предполагаю, что это has_and_belongs_to_many таблица соединений.

Убедитесь, что ваш users.yml прибор имеет:

user:
 roles: moderator

и у вашего инструмента role.yml:

moderator:
 name: 'Moderator'

и значения id не установлены в файлах user.yml или roles.yml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...