2012-01-23 42 views
3

我仍是新的頂級rspec,所以請原諒,如果這是一個簡單的問題,但我無法在Google上找到答案。我有一個庫模塊來處理API響應中的一些數據。我寫了測試,並且所有工作都很好,但是我想將假的API響應數據移動到外部文件中,因爲它很長,並且使測試更難以閱讀。我看着燈具和工廠,但這些都是模型,這只是一個非常長的XML片段。我目前的測試看起來像這樣rspec使用外部文件中的數據填充變量

describe :my_test do 
    let(:my_var) { REALLY_LONG_XML_SNIPPET} 
    ....test code... 
end 

如何將REALLY_LONG_XML_SNIPPET移動到外部文件中?

回答

8

這是我在我的規格使用:

let(:doc) { IO.read(Rails.root.join("spec", "fixtures", "api_response.xml")) } 

將文件的內容複製到一個字符串。

請注意,我已經關閉了RSpec的默認ActiveRecord燈具,所以我把燈具放在該目錄中。

更新:使用RSpec的Rails 3.5和較新的

一個也可以使用file_fixture

let(:doc) { file_fixture("api_response.xml").read } 

爲默認保存在規格/夾具/文件

文件

但可以自定義文件位置。

+0

正是我想要做的。謝謝詹姆斯! –

+0

@James任何你使用'IO.read'而不是'File.read'的原因? – Andrew

+1

@Andrew 2個字符 - 非常「紅寶石」:D –