0

私は rspec と capybara を使用しており、たとえば click_button への応答として得られる JSON 応答をテストしたいと考えています。:js => true を使用できることは理解していますが、取得した JSON を解析したいと考えています。次のようなことができることがわかりました:

get '/your/path', format: 'js'

次のような方法はありますか:

click_button('Save', format: 'js')
::JSON.parse(response)....

?

どうも

4

1 に答える 1

3

Selenium のようなブラウザー elumation ライブラリの目的は、実際のブラウザーに近づき、実際のユーザーの動作をエミュレートできるようにすることです。実際のユーザーは AJAX アクションへの応答を読み取ることができないため、ブラウザー エミュレーション ライブラリはそのような機能を提供しません。また、Selenium の連中がそれを実装するのは非常に困難です。

いくつかの可能性があります。

  • http クライアント ライブラリの 1 つを使用して、このテストを記述します。しかし、この方法を使用して、多くの Javascript と AJAX を含むものをエンドツーエンドで実際にテストすることはできません。
  • AJAX アクションによって、アプリケーションの DOM 内の何かが変更される可能性があります。Capybara を使用して簡単にチェックを作成できます。
  • ただし、アプリをエンドツーエンドでテストし、AJAX アクションに対する HTTP 応答を直接確認したい場合は、すべての応答を記録するプロキシを使用する必要があります。次に、それらの応答を検索します。Selenium のメンテナは、Browsermob プロキシを使用してこのようなことを行うようアドバイスしています。これは、Selenium の Ruby バインディングのメンテナーによって書かれた Ruby バインディングです。
于 2013-06-11T21:57:11.543 に答える