【问题标题】:How to test serialize column?如何测试序列化列?
【发布时间】:2014-05-29 17:58:12
【问题描述】:

我的模型中有这个:

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"

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

坦克

【问题讨论】:

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


    【解决方案1】:

    您可以使用shoulda-matchers 来完成。

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

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

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

    【讨论】:

      【解决方案2】:

      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
      

      【讨论】:

      • 我不需要知道它会保存,因为序列化已经向我保证了它。我只需要在我的模型中测试它,该列有一个序列化数组。在我的测试中,我没有在数据库中保存任何内容,仅在特定情况下。
      猜你喜欢
      • 1970-01-01
      • 2010-09-05
      • 1970-01-01
      • 1970-01-01
      • 2021-08-16
      • 1970-01-01
      • 2017-06-04
      • 1970-01-01
      • 2011-11-06
      相关资源
      最近更新 更多