Связь не существует при запуске тестов rspec - PullRequest
7 голосов
/ 29 ноября 2011

У меня есть в моем group_spec.rb файле:

describe Group do
  it { should have_many(:users) }
end

и в моем файле user_spec.rb:

describe User do
  it { should belong_to(:group) }
end

Когда я запускаю тесты, я получаю:

Failure/Error: it { should have_many(:users) }
ActiveRecord::StatementInvalid:
PGError: ERROR:  relation "users" does not exist

   LINE 4:              WHERE a.attrelid = '"users"'::regclass
                                           ^
   :             SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
                 FROM pg_attribute a LEFT JOIN pg_attrdef d
                   ON a.attrelid = d.adrelid AND a.attnum = d.adnum
                WHERE a.attrelid = '"users"'::regclass
                  AND a.attnum > 0 AND NOT a.attisdropped
                ORDER BY a.attnum

В моем файле group.rb у меня есть:

has_many :users

И в моем файле users.rb у меня есть:

belongs_to :group

Я чувствую себя какМне не хватает того, что должно быть очевидным.Любая помощь будет оценена.Спасибо!

Джон

Ответы [ 2 ]

24 голосов
/ 07 июня 2012

Имел эту же проблему и использовал решение в комментарии от cuvius.Публикуйте здесь, чтобы люди не пропустили это!

Запустите: RAKE_ENV=test rake db:migrate:reset db:test:prepare, чтобы настроить тестовую базу данных.

1 голос
/ 08 июня 2016

К сожалению rake db: test: prepare устарела в rails 4 + , так что это не лучшее решение сейчас.
Я полагаю, что в вашем классе фабрики пользователей, записанном как Пользователь .Проблема возникает из-за того, что фабрики загружаются до выполнения миграции.
Чтобы решить эту проблему:
Измените имя класса фабрики с

factory :user, class: User do
  # ...
end

на

factory :user, class: 'User' do
  # ...
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...