2012-02-23 2 views
3

Я хотел бы использовать rspec для проверки достоверности сериализованного хэша, но я не уверен, как это сделать. Есть ли способ проверить, что хеш имеет определенные ключи и значения?Rails ActiveRecord Сериализованные данные Rspec Test

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