問題タブ [intern]
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.
javascript - Dojo Intern: ウィジェットまたはページ要素を見つける最良の方法は何ですか?
http://theintern.io/ : 機能テスト内でDojoが生成したウィジェットIDを見つける最良の方法は何ですか?
現在、dijit レジストリを使用して、ラベル値や属性などの識別子によって興味のあるウィジェットが見つかるまで、すべてのウィジェットをループ処理しています。しかし、これを行うために、コレクションを反復処理しているだけregistry.toArray()
で、少しラフに感じます。
例えば
アップデート
現在、テスト中のアプリケーションは、同じタイプのウィジェットが複数使用されているため、そのページ要素に id を設定することを回避しています。したがって、他の手段でそれらを見つけることは困難ですが、上記の例と dojo/query を使用してそれを管理しました。もちろん、xpath を使用することもできました。上記の例は大まかな例であり、検索を少し絞り込むこともできました。
私は、ページ要素を見つけるために人々がどのようなアイデアを持っているのか疑問に思っていました.私はウィジェットIDに集中していましたが、属性を見つけることは役に立ちます. たとえば、テキストを検索する Intern へのプラグインがあるのではないでしょうか?
unit-testing - dojo/node でロードされた Node.js モジュールをモックする方法
Node.js で実行され、 Dojo を使用するサーバー コードを含むアプリケーションがあります。config
次のように定義されたモジュールがあります。
このモジュールを単体テストできるようにするために、2 つのモックを作成しました。1 つはnconf
ネイティブ モジュール用で、もう 1 つはdojoConfig
. テストは次のとおりです。
dojoConfig
のモックが正しくロードされていることがわかりますが、nconf
モジュールのモックはロードされていません。Intern の Web キャストで、Dylan はマッピングがプラグインを考慮していないこと、dojo/node
モジュールに this を強制的にロードさせる方法があることを述べましnconfMock
た。詳細を教えていただけませんか?
明らかに、これは冗長であるため、これが引き続き一般的な要求である場合は、おそらく将来的に簡単にするために何かを行うでしょう.
重要な注意:にマッピングdojo/node
しないと、上で定義しintern/node_modules/dojo/node
た初期モジュールのロードがIntern 環境で失敗します。config
マッピングはintern.js
ファイルで行われます。報告されたエラーは次のとおりです。
解決策:以下の Colin Snover が提案したように、私は現在 Mockery を使用しています。また、 contextual は使用せrequire
ず、デフォルトのみを使用します。これは、バージョン 1.9.3 の Dojo ツールキットで動作する (簡略化された) ソリューションです。
ありがとう、ドム
javascript - Dojo AMD モジュールのロードが TheIntern テスト フレームワークで失敗する
TheInternテスト フレームワークを使用するためのデモを作成しています。テスト モジュールdemo/intests/dataを読み込もうとすると、次のエラーが発生し続けます。
ただし、ブラウザからこのファイルにアクセスすることは問題ありません。サーバー ログは次のとおりです。
demo/intests/dataでできるだけ単純なモジュールを作成してみました:
データ:
- アプリケーションのルートは $HOME/Projects/dojo_playground/tutorials/ にあります
- モジュールdemo/intests/dataは *$HOME/Projects/dojo_playground/tutorials/demo/intests/data.js* にあります。
- インターン構成: http://pastebin.com/hyi55qp7 .
- webserver は Nodejitsu の http サーバーで、localhost から実行されます。webroot は $HOME/Projects です。
unit-testing - Dojo 1.7.2 プロジェクトのインターン ユニット テスト ケースの使用
intern モジュールのチュートリアルに従い、ie をインストールしnpm install intern --save-dev
ました。
ブラウザー ベースのインターン テストが使用されるように、インターン ノード モジュールをプロジェクト ワークスペースにコピーしました。
nodeモジュールで提供されているテストhtmlページをコピーし、前述のようにパッケージのパスを設定しました。
チュートリアルに従って、テスト ウィジェットとそのテスト ケースを作成しました。
最後に、テスト html ページでテストしましたが、パッケージに dojo バージョン 1.7.2 を指定したため、クラス ローダーの問題がありました。
1.9.1 で試すと動作します。実際のエラーは、1.7.2 バージョンには存在しない dojo/promise などのモジュールが必要でした。
私はこのバージョンの競合に悩まされており、インターンが Dojo 1.7.2 と互換性があるかどうかを知る必要があります。
そうでなければ、古いバージョンの Dojo のインターン テスト ケースを作成する方法はありますか?
これについて助けてください!
intern - インターン約束タイムアウト
私はインターンでいくつかの機能テストを書いていて、次のテキストセクションに出くわしました...
「テストのタイムアウト内に promise が満たされない場合も、テストは失敗します (デフォルトは 30 秒です。値を変更するには、this.timeout を設定します)。」
で...
https://github.com/theintern/intern/wiki/Writing-Tests-with-Intern#asynchronous-testing
機能テストの promise タイムアウトを設定するにはどうすればよいですか? promise で timeout() を直接呼び出してみましたが、有効な方法ではありません。
すでにさまざまな WD タイムアウト (ページ読み込みタイムアウト、暗黙の待機など) を設定していますが、promise のタイムアウトに問題があります。
intern - Selenium を介してテストを実行するときに、Intern ディレクトリの外で依存関係を読み込む
Intern ユニット テストが、テスト対象のソース コードとは別のディレクトリ ツリーにあるはずのプロジェクトがあります。ややこのように:
Intern 構成ファイルで、相対パスを使用してユニット テスト スイートから../
到達する AMD パッケージを定義します。src
構成例を次に示します。
および一致する単体テスト スイート
これは、ブラウザー (client.html) またはノード (client.js) で直接テストすると問題なく動作します。ただし、Selenium サーバー (runner.js を使用) を介して起動すると、Selenium によって開始されたブラウザーで実行されている client.html は、外部依存関係を見つけることができません。上記の例では、ディレクトリがインターン内にないhttp://localhost:9000/__intern/src/ExternalDep.js
ため、404 である でExternalDep を要求しようとします。src
テストとソース コードの両方の共通スーパー ディレクトリの最上位に intern.js を配置すれば、うまくいくと思います。しかし、私たちのプロジェクトは現在、それを非現実的にする方法で設定されています。Intern 構成ファイルの場所を超えて存在するソースを構成する方法はありますか、それともばかげた間違いを犯したのでしょうか?
ありがとう!
functional-testing - Intern 機能テストにステップインする
私の質問は、機能テストにブレークポイントを設定するにはどうすればよいですか? インターンでも可能ですか?私は WebDriver でローカルにテストケースを実行していて、'debugger;' を持っています。ブレークポイントはテストケースの開発を容易にします。
execute(function () { debugger; }) はブラウザーで実行され、「debugger;」で動作する必要があります。その中にありますが、実行は停止しません...
google-chrome - コマンド ラインから Chrome エミュレーションを開始する
Google Chrome と Intern を使用して自動テストを実行しています。Chrome を CLI からエミュレーション モードで起動する方法や、特定のフラグを使用してモバイル レンダリングをテストする方法があるかどうかを知りたいです。そうでない場合、良い回避策を知っていますか?
Android Emulator (Android SDK から) を Selenium Webdriver apk またはモバイル Chrome で直接使用できますが、ほとんどの場合、テストがクラッシュし、エミュレーターが応答せず、再起動する必要があります。また、Android デバイスに限らず、可能な限り広い範囲でテストする必要があります。デスクトップ上の Chrome ははるかに安定しており、テストが失敗した場合でも、Chrome は常に応答し、Intern によって自動的に閉じることができます。
「--enable-touch-events」フラグとカスタム userAgent を使用して回避策を試みましたが、奇妙な動作が発生しています。多分他のフラグが私を助けるでしょうか?
ご回答ありがとうございます。