2011-06-17 11 views
4

最近、キュウリ試験でスタブリクエストにVCRを使用し始めました。私たちはキュウリのテーブルを使ってさまざまな種類のリクエストを記述し、それらをガーキンで変数として保存しています。私たちのカセットファイルはすべてerbを含むように修正されているので、テストしたいリクエストの値を代入することができます。VCRがカセットのerbを上書きするのを防ぐ方法

新しい要求があるたびにVCRは新しい要求を記録し、すべてのerbをカセットから上書き(削除)し、その例の補間された要求で置き換えます。値が変更されたリクエスト(たとえば、私たちが話しているAPIから受け取ったタイムスタンプの値)を実行するたびに、すべてのerbをカセットファイルにコピーする必要があります。テストは常に実行されるので、これはイライラしています。

新しいレスポンスを録音するときにVCRがerbを除去する理由は誰にも分かりますか?回避策の考えはありますか?補間する前にテンプレートを保存する方法はありますか?

答えて

4

手動で変更したカセットを新たに記録されたカセットと自動的にマージするのは難しい問題です。私の意見では、テキストドキュメントの履歴を処理してマージを管理するツールソース管理システム)。 ERBではさらに難しくなります。変数を補間するのにERBを使用しているだけで、有効なルビを使うことができます。 ERBにはループや条件文などがあります。 VCRが自動的にこの情報をマージする方法はありません。

カップル提案:彼らは頻繁に上書きされないように

  • は、よりきめ細かな方法であなたのカセットを使用してください。私は、各HTTP要求またはHTTP要求の論理グループごとにカセットを使用する傾向があります。
  • :onceレコードモード(最近のデフォルト)を使用して、既存のカセットが上書きされないようにします。
  • VCRのsensitive data filtering機能をご覧ください。これはERBよりはるかに柔軟性がありません(つまり、ループ、条件文、任意のルビコードを使用することはできません)。しかし、単純な変数補間の場合、実際にはうまく機能します。 ERBを使用するのではなく、プレースホルダ文字列を使用します。たとえば、パスワードの代わりに<PASSWORD>のような文字列を使用します。 VCRは、カセットを記録するときにプレースホルダテキストを挿入し、再生時に正しい実際の値に置き換える処理を自動的に行います。
  • これがあなたのニーズを満たさない場合、before_record and before_playback hooksは、カセットが記録されたときに自動的に補間(またはERBスニペット挿入)するために必要なすべての力を与えるはずです。これは基本的にフィルタリングの仕組みです - hereを参照してください。

これらのことがあなたのニーズを満たしていない場合、VCRを改善する方法についてのアイデアは確かです。

+0

うわー!男自身:これはクールです! – Ziggy