【问题标题】:undefined method `keys' for "{\"prompt\"=>\"What is your name?\"}":String"{\"prompt\"=>\"What is your name?\"}" 的未定义方法 `keys':String
【发布时间】:2015-12-31 22:00:07
【问题描述】:

我有一个序列化字段,我想在 Rails 4 的功能测试中使用它。

Fixtures 将哈希值保存为字符串。

Step.rb
serialize :custom, ActiveRecord::Coders::NestedHstore

steps.yml
one:
  name: Simple example.
  custom:
    name:
      prompt: What is your name?

step.custom 中,我想要哈希{name: {prompt: "What is your name?"}。相反,在测试中,我得到一个字符串以及错误:

undefined method `keys' for "{\"prompt\"=>\"What is your name?\"}":String

这当然会导致我的测试失败,因为我的代码库需要一个哈希。我试过<%= hash.to_yaml.inspect %>,但这似乎不起作用。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 functional-testing fixtures


    【解决方案1】:

    我会试试这个:

    require "yaml"
    new_hash = YAML.parse hash
    

    【讨论】:

    • 我很少使用固定装置(我使用 FactoryGirl 代替),但在这种情况下,我可能会在步骤定义中运行我上面提到的代码,以您需要的格式处理数据。
    猜你喜欢
    • 2023-02-21
    • 2019-06-21
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-10
    相关资源
    最近更新 更多