2012-02-23 116 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

要確保序列化實際上是工作,你會想create記錄,不只是new初始化(即將其保存到數據庫中,然後將其存儲爲YAML)。然後你可以讀回它(使用reload來確保它實際上是檢索序列化的數據庫版本):

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

謝謝;我在前面的塊中添加了一個'@ foo.save',並且能夠在我的測試中重新加載'@ foo'實例。似乎現在正在工作。 – rringler 2012-02-24 01:38:30

相關問題