問題タブ [vcr]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
3904 参照

ruby - VCRProxy:Capybara内でVCRを使用してPhantomJSajax呼び出しを記録します

私はすでにこの分野でいくつかの研究をしましたが、解決策は見つかりませんでした。Facebookに対して非同期ajax呼び出しが行われるサイトがあります(JSONPを使用)。私はすべてのHTTPリクエストをVCRを使用してRuby側で記録しているので、この機能をAJAX呼び出しにも使用するのはクールだと思いました。

それで、私は少し遊んで、プロキシの試みを思いつきました。私はPhantomJSをヘッドレスブラウザおよびカピバラ内の統合のためのポルターガイストとして使用しています。これで、ポルターガイストは次のようなプロキシを使用するように構成されました。

テストの目的で、VCRを統合するWEbrickに基づくプロキシサーバーを作成しました。

これはすべてのローカルホスト呼び出しでうまく機能し、それらはうまく記録されます。HTML、JS、CSSファイルはVCRによって記録されます。次に、このオプションを有効にしましたc.ignore_localhost = true。ローカルホスト呼び出しを記録するのは(私の意見では)役に立たないためです。

それからもう一度試しましたが、ページで行われたAJAX呼び出しが記録されていないことを理解する必要がありました。さらに悪いことに、それらはもはやテスト内では機能しません。

つまり、私の質問は、ローカルホスト上のJSファイルへのすべての呼び出しが記録され、外部リソースへのJSONP呼び出しが記録されないのはなぜですか?それは「通常の」ajaxリクエストであるため、jsonPのものにすることはできません。または、phantomjs内に、AJAX呼び出しがプロキシされないというバグがありますか?もしそうなら、どうすればそれを修正できますか?

実行中の場合、開始手順と停止手順を内部に統合したい

- - - - アップデート - - - -

私はいくつかの調査を行い、次の点に到達しました。プロキシには、HTTPS呼び出しとHTTPS呼び出しを介したバイナリデータにいくつかの問題があります。

サーバーを起動し、curl呼び出しを行いました。

この通話は正常に録音されます。プロキシからの要求と応答の出力は

ただし、この通話は録音されません。HTTPSに問題があるはずです。

ヘッダー出力は次のとおりです。

したがって、プロキシはHTTPSを処理できないのではないかと思いましたが、(cURL呼び出しの後にコンソールに出力を取得している限り)処理できます。それから私は、多分VCRはHTTPSリクエストをモックできないと思いました。しかし、このスクリプトを使用すると、プロキシ内で使用しない場合、VCRはHTTPS要求をモックアウトします。

では、何が問題なのでしょうか。VCRはHTTPSを処理し、プロキシはHTTPSを処理します。なぜ彼らは一緒に遊んでいないのですか?

0 投票する
2 に答える
1126 参照

ruby - ホストごとに分割された異なるカセットに録音/再生する方法は?

私が取り組んでいるプロジェクトでは、VCR を使用してローカル サービスと外部サービスの両方のカセットを保管しています。ローカル サービスは常に変更されるマイクロ サービスですが、外部サービスはほとんど変更されません。

この理由に加えて、外部サービスの再録音には長い時間がかかるため、ほとんどの場合、ローカル カセットのみを再録音することは理にかなっています。

それを解決するために、カセットを別のフォルダー (cassettes/localhost とカセット/external/sample.com) に分けようとしました。

次に、次のように考えました。

しかし問題は、サーバーが異なる結果を返す場合に、繰り返し要求 (まったく同じ要求) を行う必要があるいくつかのテストがあることです。したがって、上記のコードを使用すると、http 呼び出しごとにカセットがリセットされます。最初のリクエストは記録され、2 番目のリクエストは最初のリクエストの再生です。応答が異なると予想されていた場合でも同様です。

次に、タグとネストされたカセットを使用して別のアプローチを試みました。

しかし、これもうまくいきません。その結果、すべての localhost リクエストが内部カセットに記録されました。残りの要求は VCR によって無視されました。

それで、これを解決するための提案はありますか?

0 投票する
1 に答える
106 参照

ruby-on-rails - スペックの定期的な実行を自動化し、失敗したときに通知を受け取るにはどうすればよいですか?

私はレシピスクリーンスクレーパーを書きました。スクリーン スクレーパーは簡単に壊れてしまうため、期待される出力についてさまざまな Web サイトをテストする仕様をいくつか書きました。私の開発環境ではVCRを使用しているため、これらのサイトに呼び出しを続ける必要はありません。

問題は、レシピ サイトが変更され、私のスクレーパーが壊れるかどうかを実際に教えてくれないことです。定期的にカセットをリフレッシュすることもできますが、私はもっと積極的になりたいと思っています。これらの特定の仕様を毎日実行し、失敗した場合は結果を通知して、戻ってスクレーパーを修正できるようにしたいと考えています。

0 投票する
1 に答える
7021 参照

ruby - VCRがカセットを記録しない

module私は、 VCRgemを使用してRubyでテストしている非常に単純なものを持っています。

ドキュメントに従ってVCRを設定しましたが、カセットをカセットディレクトリに記録することができないようです。念のため、カセットディレクトリの権限を777に変更しました。本当に奇妙なことは、カセットディレクトリを完全に削除し、仕様を実行してから、新しいカセットディレクトリが作成されることです。

Typhoeusで0.4.2を使用していHydraます。現在、Typhoeusをアップグレードできません。

関連するコード:

なぜカセットが書かれていないのかわかりません。

0 投票する
2 に答える
854 参照

ruby-on-rails-3.2 - rspec を使って悪いネットワーク接続をテストする方法

外部 API への接続エラーをテストしたいと思います。これを行う最善の方法は何ですか?

私のコントローラーに私が持っている

エラーがユーザーに表示されることをテストしたいと思います。

0 投票する
0 に答える
824 参照

c# - NUnitのVCR相当

C# と .net を使用して、基本的なネットワーク アプリケーションを作成しました。テストには、 Ruby の VCRに似たものを使用したいと考えています。C#/.net にそのようなものは存在しますか?

0 投票する
1 に答える
2066 参照

ruby-on-rails - 開発環境でアプリを実行すると、定数 VCR が初期化されない

RailsアプリでVCRを使用してテストを高速化していますが、テスト環境では魅力的に機能します

しかし、開発環境でサイトを物理的にナビゲートすると、常に初期化されていない定数 VCRというエラーが表示されます。

config/application.rb で VCR を要求することで問題を解決できます

しかし、これは正しい解決策のようには感じられません...

これは、アプリがすべての RAILS_ENV でカセットを使用することを強制しませんか?

アプリが実行される他の環境ではなく、テスト環境でのみ VCR カセットを使用したい.

これに対する最善の解決策は何ですか?

0 投票する
2 に答える
968 参照

ruby-on-rails - Rails 統合テスト/仕様を作成するときに、外部の JavaScript ライブラリをスタブする方法は?

私のアプリは、ジオコーディング用の Google マップと支払い用の Stripe とのインターフェイスを備えています。VCRを使用して、これらのサービスへのすべての要求をモックしました。これはうまく機能します。しかし、両方のライブラリはまだjavascript_include_tags にロードされています。統合テストをインターネットから完全に切断して実行できるようにするには、これに対処する最善の方法は何ですか?

0 投票する
1 に答える
409 参照

ruby - Ruby TestUnit、VCR、HTTPAPIリクエスト

私はAPIラッパーを作成していて、そのためのテストをいくつか書いています。いくつか質問があります。

assert1)データが存在しないfor呼び出しを作成するにはどうすればよいですか?たとえば、APIを使用してIDでメンバーを検索しますが、ユーザーはまだ存在しません。2)テストとリクエスト
のためにを書くにはどうすればよいですか?assertPUTDELETE

私はすでにテストGETPOST要求を把握しており、他の2つの動詞についてはよくわかりません。

0 投票する
3 に答える
2720 参照

ruby-on-rails - vcr はこの要求を処理する方法を知りません

こんにちは、タグ付きのvcrを使用してキュウリでGoogle認証をテストしようとしています。

トークンの有効期限が切れるまで、すべてがうまくいきます。期限が切れたらこうなると思う

ここに画像の説明を入力

しかし、私はこの内容のファイルを持っています

VCR に新しいリクエストの記録を許可すると、このカセットの内容が変更されます。メソッドと uri が POST をhttps://accounts.google.com/o/oauth2/tokenに変更しない場合、その理由がわかりません。

タグを変更して新しいエピソードを記録し、テストに合格しました... 私は無知です。

テストを再度実行すると、トークン URL への POST が実行されているときに次のようになります。