2013-07-30 2 views
7

1つのREST APIに対してRubyインターフェースを開発します。私はテストのためにrspecとvcrを使用します。
すべてのテストでは、特別に作成されたアカウントの資格情報が使用されます。
私のテストのキャッシュされた応答(vcrカセット)を リポジトリに保存するか、ユーザーとサブスクライバが独自のカセットを書き込むことができますか?vcrカセットをリポジトリに保存するのは正しいですか?

皇帝の名前で!聖戦が始まりましょう!

+0

FWIW、VCRの作成者は、カセットをコミットする:https://twitter.com/myronmarston/status/199887944570503168。彼が詳細を書き込んだ投稿がありますが、見つけられません。 – Dennis

答えて

3

重要な情報をリクエストに含めない限り、コミットできない理由はありません。

しかし、カセットを最初にテストした後に正常に機能する限り、いずれにしてもあまり問題はありません。

個人的に私は、私のリクエストフォーマットを変更するあいまいなマシン固有のエラーを診断する必要がある場合に備えて、履歴リクエストに対してチェックされるというアイデアが気に入っています。 (IEは動的にロードされたライブラリのために物事が間違ってエスケープされているバグをエンコードします)。

5

VCRのカセットは、テストのフィクスチャとして機能します。そうでなければ、テストは他人のマシンで正しく実行されません。あるいは、テストの原則に違反する重い外部依存関係がある場合にのみ正しいテストが実行されます。

もちろん、上記の内容を維持しながら、一般ユーザーやチームから資格情報を非表示にする必要があります。

解決策はfilter_senstive_data設定とフィガロの宝石です。

まず、This answer from Myron in a similar questionは、あなたの問題を大きく解決できます。セットアップVCRに

VCR.configure do |c| 
    c.filter_sensitive_data("<SOMESITE_PASSWORD>") do 
    ENV['SOMESITE_PASSWORD'] 
    end 
end 

私が確認し、この設定についての詳細はドキュメントを後で

以上を追加したいので、マイロンの答えからコピーしたコードの上記ブロックhttps://relishapp.com/vcr/vcr/v/2-5-0/docs/configuration/filter-sensitive-data

ENV['SOMESITE_PASSWORD']の場合は、Figaro gemを使用して実際の資格情報にすることができます。

フィガロのインストールによりファイルconfig/application.ymlが作成され、.gitignoreに追加されます。だから、あなたの資格情報のユーザー名とパスワードを公開することなく、その資格情報のユーザー名とパスワードを入力するだけで済みます。

関連する問題