2012-02-23 30 views
3

シリアル化されたハッシュの妥当性をテストするためにrspecを使用したいと思いますが、どうすればよいかわかりません。ハッシュに特定のキーと値があることを確認する方法はありますか?Rails ActiveRecordシリアル化データRspecテスト

foo.rb

class Foo < ActiveRecord::Base 
    attr_accessor :bar 
    serialize :bar 

end 

foo_spec.rb:

require 'spec_helper' 

describe Route do 
    before { @foo = Foo.new(bar: { a: 1, b: 2, c: 3 }) } 

    subject { @foo } 

    it { should #????? } 
end 

答えて

3

連載が実際に働いていることを確認は、あなただけのnewでそれを初期化しない、createにレコードをしたいと思います作るために(つまり、それをあなたのデータベースに保存し、YAMLとして保存します)。次に、それを読み取ることができます(reloadを使用して、実際にシリアル化されたデータベースのバージョンを取得していることを確認してください)。

it "deserializes the hash" do 
    @foo.reload.bar.should eq({a: 1, b:2, c: 3}) 
end 
+0

ありがとうございます;前のブロックに '@foo.save'を追加し、テストで' @ foo'インスタンスをリロードすることができました。今働いているようだ。 – rringler

関連する問題