【问题标题】:rspec: augment hash with to_json method from railsrspec:使用 rails 中的 to_json 方法增加哈希
【发布时间】:2013-12-11 07:16:47
【问题描述】:

我正在将 ruby​​ on rails 代码库的一部分重构为 ruby​​ gem。作为该过程的一部分,我必须将一些测试用例转移到 gem。

对于其中一项测试:

describe A::B do
  describe "#someMethod" do
    let(:user_hash) { {'id' => 3, "username" => "user", "email" => "email@some.domain"} }
      it "return the base64 message" do
        described_class.message(user_hash).should ==
          Base64.encode64(user_hash.to_json).gsub("\n", "")
      end

问题是,普通哈希没有to_json 方法,所以当我运行测试时我不断得到NoMethodErrorto_json 方法似乎源自activeresource (https://github.com/rails/activeresource)。我现在如何使用 to_json 方法增加哈希?

谢谢。

【问题讨论】:

  • 在顶部添加require 'json'
  • 嗨 vinodadhikary,这行得通!将其正式发布为答案?你知道一种方法来找出这些方法实际上来自哪里吗?我正在使用 RubyMine 进行查找,它为我提供了可能实现的完整列表
  • 请看我的回答。我已尝试在您的评论中回答您的问题。

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


【解决方案1】:

当您遇到NoMethodError 时,这意味着您没有加载所需的库。在需要使用方法to_json的测试用例中添加require 'json'

要在评论中回答您的问题:

您知道找出这些方法实际来自哪里的方法吗?我正在使用 RubyMine 进行查找,它为我提供了可能实现的完整列表

确实,当您在寻找您不知道的功能时,搜索引擎会派上用场。可能不是一个吸引人的答案,但这就是我学习的方式:) 在写这个答案时我做了this search on Google,第一个结果就是你问题的答案。

【讨论】:

  • 哈哈,我明白了……看来我的谷歌搜索技能可以提高了。感谢您的帮助!
  • 如果你使用vim和Ctags,可以将光标放在方法名上,按跟随标签进入源码。
猜你喜欢
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多