在针对ActiveRecord模型运行RSpec测试时接收“未知方法”错误

时间:2010-12-23 02:56:54

标签: ruby-on-rails-3 rspec2

我在一些ActiveRecord验证上遇到一些RSpec测试时遇到了一些麻烦。测试套件如下所示:

describe Event do
  context "An Event" do
    before do
       valid_event_hash = {
          :name => 'Blah Blah',
          :desc => 'Yadda Yadda Yadda',
          :category => 'some category',
          :has_partner => false,
          :event_abbr => 'BB'
       }
       @event = Event.new(valid_event_hash)
    end

    it "should have a name" do
       @event.name = ''
       @event.should_not be_valid
    end

    it "should have a description" do
       @event.desc = ''
       @event.should_not be_valid
    end

    it "should have an abbreviation no shorter than 2 letters and no longer than 3 letters" do
       @event.event_abbr = ''
       @event.should_not be_valid
       @event.event_abbr = 'BlaBla'
       @event.should_not be_valid
       @event.event_abbr = 'B'
       @event.should_not be_valid
    end

    after do
       @event.destroy
    end
 end

end

设置模型以便它应该适当地传递所有这些验证。该模式表明我填写的所有字段都存在并被考虑在内。然而,当我运行自动测试时,测试失败并出现以下错误:

Failure/Error: @event = Event.new(valid_event_hash)
unknown attribute: event_abbr

我可以在控制台中使用这些值创建完全相同的@event实例,并且它可以完美地运行。我的直觉反应是,由于某种原因,测试套件使用的模型不知道:event_abbr字段,但我想不出为什么会这样。我确定我错过了什么,但我不确定它是什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

您是否在测试数据库上运行了迁移? E.G。

RAILS_ENV=test rake db:migrate

否则,请尝试

rails console test

并在那里试试。