Ruby:如何记录一个对象并将其重用于测试?

时间:2019-05-27 19:49:43

标签: ruby-on-rails ruby

在Ruby-on-Rails中,如何记录对象及其状态(处于开发模式),以便我可以将其用于测试目的?例如请求对象,但更笼统地说,是任何复杂的对象,无论我是否拥有类定义。

1 个答案:

答案 0 :(得分:2)

一种选择是使用Marshal,它是本机内置在ruby中的(即,不是特定于Rails的)。您可以使用Marshal通过serialized_obj = Marshal.dump(my_object)将对象序列化为字符串。您可以将这些字符串存储在文件中,然后通过my_obj = Marshal.load(serialized_obj)在测试套件中反序列化它们。这是Mehdi Farsi https://blog.appsignal.com/2019/03/26/object-marshalling-in-ruby.html的出色文章中的一个例子。

hello_world = 'hello world!'

serialized_string = Marshal.dump(hello_world) # => "\x04\bI\"\x11hello world!\x06:\x06ET"
serialized_string.class                       # => String

deserialized_hello_world = Marshal.load(serialized_string) # => "hello world!"

hello_world.object_id              # => 70204420126020
deserialized_hello_world.object_id # => 70204419825700