2013-12-11 74 views
0

我正在將rails代碼庫中的ruby部分重構爲ruby gem。作爲該過程的一部分,我必須將一些測試用例轉移到寶石上。rspec:用rails的to_json方法增加散列值

對於測試之一:

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

的事情是,普通的哈希值沒有to_json方法,所以我不斷收到一個NoMethodError,當我運行測試。 to_json方法似乎來源於activeresourcehttps://github.com/rails/activeresource)。我現在如何用to_json方法增加散列?

謝謝。

+1

在頂部添加'require'json''。 – vee

+0

嗨vinodadhikary,工作!正式發佈它作爲答案?你知道一種方法來找出這些方法實際來自哪裏嗎?我正在使用RubyMine查找,它給了我這個可能的實現列表 – yanhan

+0

請看我的答案。我試圖在你的評論中回答你的問題。 – vee

回答

1

當您遇到NoMethodError時,這意味着您沒有加載所需的庫。在您需要使用方法to_json的測試用例中添加require 'json'

要回答你的問題在您的評論:

你知道的一種方式來找出這種方法實際上是從?我正在使用RubyMine查找,它給了我這整個可能的實現列表

真的,當您正在尋找您不知道的功能時,搜索引擎會前來救援。可能不是一個有吸引力的答案,但這就是我學習的方式:)在寫這個答案時,我做了this search on Google,第一個結果就是你的問題的答案。

+0

哈哈我看...看起來我的谷歌搜索技能可以提高。謝謝你的幫助! – yanhan

+0

如果您使用vim和Ctags,您可以將光標放在方法名稱上,然後按將該標籤放在源代碼中。 – geoffharcourt