如何测试序列化列?

时间:2014-05-29 17:58:13

标签: ruby-on-rails ruby tdd rspec-rails

我的模型中有这个:

class MyModel < ActiveRecord::Base
 serialize :my_column, Array
end

我该如何测试?

今天我正在测试这个:

it "column serialize Array" do
 subject.my_column.is_a?(Array).must_equal true
end

我正在使用gem "minitest-rails-shoulda"

还有其他方法可以测试吗?

2 个答案:

答案 0 :(得分:2)

您可以使用shoulda-matchers完成此操作。

class MyModelTest < ActiveSupport::TestCase
  should serialize(:my_column)
end

查看code comments,一切都应该非常简单。

如果您使用的是Rails 5,请注意当前有an issue

答案 1 :(得分:0)

serialize在db中存储一个对象,因此您要测试可以在保存后重新加载(YAML转换成功)。做这样的事情:

it "column serialize Array" do
  obj = MyModel.new 
  obj.my_column = [1,2,3]
  obj.save!
  obj.reload.my_column.should == [1,2,3]
end