1

私は Capybara を使用して、徐々に強化された Web サイトの機能をテストしています。私の機能が場所の階層をナビゲートすることだとしましょう。非 JavaScript バージョンでは、さまざまな場所をクリックすると新しいバージョンのページが取得されます。強化された JavaScript バージョンは、非表示の要素を開いたり、Ajax を介して新しい情報をロードしたりします。

次のような非 JavaScript バージョンのテストを作成することから始めます。

When I visit the page for "UK"
And I click "London"
Then I should see the information for "London"

デフォルトの機械化ドライバーを使用すると、テストが失敗し、機能を開発すると、テストに合格します。

次に、@javascript でフラグを立てて、javascript バージョンの同一のテストを作成します。javascript ドライバーを使用してテストを実行し、機能が実装されているため、そのテストに合格します。(非 js フローを実行しています)。ただし、機能がまだ Javascript で拡張されていないため、この時点で JavaScript バージョンのテストが失敗することを望みます。

そのため、新しいページ全体がサーバーから送信されたかどうかを判断し、両方のバージョンの機能が機能することを確認するための優れた戦略を探しています。(これを pushState と統合する予定なので、変更された URL のテストは実行されません)

4

2 に答える 2

1

これについて他の人の意見を聞くことに興味があります-ユーザーインタラクションの観点から機能を説明しているので、Cucumberがこの仕事に適したツールであるとは確信していません。プログレッシブエンハンスメントの実装により、結果が得られるようです。本質的に同じユーザーインタラクションで。

それはさておき、これを支援するために、ページ自体に何らかのテストフックを組み込むことを検討することをお勧めします。あなたの正確な状況を知らずに何を言うのは難しいですが、おそらく次のいずれかです:

  • スクリプトで拡張されたバージョンのページは、DOMに要素を追加して、拡張がアクティブであることを示したり、データがページの読み込みではなくAJAXリクエストからのものであることを示したりする可能性があります。
  • すべての読み込み(新しいGUIDなど)で(サーバーから)ランダムなページ識別子を生成し、これをDOMに埋め込んで、(拡張バージョンで)対話後に変更されていないことを表明できます。これは、指定された目標を達成するための非常に簡単な方法です(「まったく新しいページがサーバーから送信されたかどうかを判断する」)。
于 2012-07-26T13:40:38.373 に答える
0

JavaScriptの「拡張」バージョンが非拡張バージョンと同じように機能するのはなぜですか?@javascriptを使用したキュウリのテストでは、拡張機能が機能することを確認するためのテストを行う必要があります。

たとえば、* javascriptが新しいページへのリンクをたどる代わりにモーダルダイアログを開く場合は、それをテストします。* javascriptがフォームを送信して値を更新する場合は、それをテストします。

これらのテストは、JavaScriptのサポートなしで実行すると失敗します。

于 2012-08-08T17:07:41.360 に答える