Rspec:如何修复需要的编组格式版本4.8; 34.92给出错误

时间:2018-02-07 01:49:53

标签: ruby-on-rails ruby rspec marshalling unmarshalling

我目前正在编写rspec测试,其中我需要使用存储在对象中的一些“真实世界”数据。

要在rspec测试中使用这些对象,我使用Marshal.dump(array_of_objects)并将其加载到Marshal.load(File.read("spec/fixtures/file_name_here"))的规范中。

不幸的是,我一直遇到一个错误,我不明白如何修复(尽管读过许多人有同样的问题):

*** TypeError Exception: incompatible marshal file format (can't be read)
    format version 4.8 required; 34.92 given

有没有办法解决这个问题,以便我可以运行测试?

1 个答案:

答案 0 :(得分:1)

虽然我还没有解决最初的问题,但我认为我可能会分享我是如何解决它的。

相反,我使用YAML将对象数组转储到文件中:

File.open(file_name, 'w') { |file| file.write(YAML.dump(array_of_objects)) }

然后我用YAML加载了该文件:

YAML.load(File.read("file_location"))

看起来这比使用Marshal更好,因为上面的问题没有提到版本问题。