У меня есть модельиспытания belongs_to включены концерном
class Survey < ActiveRecord::Base
include Respondable
end
в БД опросы таблица имеют следующие поля:
- responses_saved_date
- responses_saved_by_type
- responses_saved_by_id
и модуль
module Respondable
extend ActiveSupport::Concern
included do
belongs_to :responses_saved_by, :polymorphic => :true
end
def update_saved_settings!(person=nil)
self.responses_saved_date = Time.now
self.responses_saved_by = person
self.save
end
end
Я пытаюсь писать тесты для Respondable беспокойства, чтобы проверить его в изоляции, в соответствии с этим BlogPost https://semaphoreci.com/community/tutorials/testing-mixins-in-isolation-with-minitest-and-rspec
Вот мой RSpec:
describe Respondable do
class DummySurvey < ActiveRecord::Base
include Respondable
end
subject { DummySurvey.new }
it { should belong_to(:responses_saved_by) }
it 'saves the settings with user' do
subject.update_saved_settings!(user)
subject.responses_saved_date.should_not be_nil
subject.responses_saved_by.should eq user
end
it 'saves the settings without user' do
subject.update_saved_settings!
subject.responses_saved_date.should_not be_nil
subject.responses_saved_by.should be_nil
end
end
Когда я следующие ошибки:
Failure/Error: subject { DummySurvey.new }
ActiveRecord::StatementInvalid:
PG::UndefinedTable: ERROR: relation "dummy_survey" does not exist
LINE 5: WHERE a.attrelid = '"dummy_survey"'...
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod),
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"dummy_survey"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum