1

一部の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フィールドを認識していないということですが、それがなぜであるかはわかりません。私は何かが欠けていると確信していますが、それが何であるかはわかりません。どんな助けでも大歓迎です。

4

1 に答える 1

2

テストデータベースで移行を実行しましたか?例えば

RAILS_ENV=test rake db:migrate

それ以外の場合は、試してください

rails console test

そこで試してみてください。

于 2010-12-23T03:04:41.280 に答える