2012-10-31 61 views
0

假設我想測試我的控制器行爲,但它通過GET接受JSON字符串。如何爲不在數據庫中的測試夾具數據

現在我在我的測試類@testJson中有var,但有時會發生一些意想不到的事情發生在那些JSONS(壞字符在內)。所以我想添加另一個測試用例。

但添加另一個var @ problematicJson1(可能更可能)似乎不是一個好主意。

什麼是保持這樣的「燈具」的最佳方式是什麼?我應該保存在文件中並加載它們嗎?是否有一些燈具功能我不知道,可以幫助?

回答

1

那些東西不是固定裝置。

您應該使用RSpec的簡潔功能(如果您使用的是RSpec),它允許懶惰地定義變量,所以實際變量僅在被特定的「it」使用時實例化,即使它是在外部「上下文/描述」塊。

https://www.relishapp.com/rspec/rspec-core/v/2-6/docs/helper-methods/let-and-let

context "some context" do 
    let(:testJson) { put your json inside the block } 
    let(:otherJson) { {:my_json => textJson} } # this will use the defined testJson 

    it "something" do 
    testJson.should have_key "blah" 
    end 

    context "some internal context" 
    let(:testJson) { something else } 

    it "some other test" do 
     otherJson[:my_json].should .... 
     # this will use the local version of testJson 
     # you only have to redefine the things you need to, unlike a before block 
    end 
    end 
end 
+0

不,我沒有使用RSpec的,但標準軌測試框架(http://guides.rubyonrails.org/testing.html),但我在想遷移到RSpec的,因爲我不能模擬/存根方法(我認爲)。 – meta

相關問題