2012-01-23 16 views
3

私はまだ新しいトップrspecですので、これは簡単ですが、私はGoogleで答えを見つけることができませんでした。私はAPIの応答からいくつかのデータを解析するライブラリモジュールを持っています。私はテストを書いていますが、うまく動作しますが、かなり長いのでテストを難しくするので、偽のAPIレスポンスデータを外部ファイルに移動したいと思います。私は備品や工場を見ましたが、それらは実際モデル用です。これは本当に長いxmlスニペットです。私の現在のテストは、私は外部ファイルにREALLY_LONG_XML_SNIPPETを移動することができますどのようにこの外部のファイルからデータを変数に取り込む

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

ようになりますか?

答えて

8

これは私が私の仕様で使用するものです。

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

それは文字列にファイルの内容をコピーします。

RSpecのデフォルトのActiveRecordフィクスチャをオフにしたので、代わりにそのフィクスチャをそのディレクトリに配置します。

更新:RSpecのRailsの3.5およびそれ以降の

1とも、デフォルトではスペック/備品/ファイルに保存されている

ファイル

ため file_fixture

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

を使用することができます

しかし、ファイルの場所をカスタマイズすることができます。

+0

私は何をしようとしていましたか。ありがとうございました! –

+0

@James 'File.read'の代わりに' IO.read'を使う理由は何ですか? – Andrew

+1

@Andrew 2文字以下 - 非常に "ルビー":D –

関連する問題