問題タブ [js-test-driver]
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.
jasmine - SublimeText2でのjsTestDriverとJasmineの使用
JavaScriptを作成するときにJasmineとjsTestDriverを使用するようにSublimeText2を構成する方法はありますか?
javascript - テスト可能な JavaScript コードの作成
私は JavaScript を使ったいくつかの作業を掘り下げ始めており、テスト可能な JS コードをどのように作成する必要があるかを感じようとしています。私のバックグラウンドは主に Java で、かなり慣れていますが、JavaScript の経験はありません。いくつか読んだ後、単体テスト フレームワークとして js-test-driver を使用するつもりでしたが、ここでも提案を受け付けています。Java では、私のアプローチは常に、何かを受け入れて何かを返す小さなメソッドに分解することでした... JavaScript では、DOM 操作と実際のロジックを 2 つの別個の関数に分離することで、同様のアプローチを取ると考えました。例えば:
したがって、ビジネスロジックは簡単にテストできます。
私はここで正しい軌道に乗っていますか、それとももっと良い方法がありますか? JS固有のこのトピックに関する推奨読書はありますか? アイデアをありがとう
javascript - Jasmine のビルトイン Spys よりも Sinon.js を使用する利点は何ですか?
フロント エンド コードをテストするための jsTestDriver/Jasmine 環境をつなぎ合わせており、スタンドアロン (またはドロップイン) スパイ用の Sinon.js への参照が多数見られます。Jasmine が UI のテストに使用しない、Sinon.js がテーブルにもたらすものを誰か説明できますか?
backbone.js - jasmine-sinon を使用した TDD バックボーンは初めてです。バックボーン単体テストの変更イベント
「変更時に router.navigate への正しいパスを提供する必要がある」バックボーンの selectbox ビューへのイベント変更のテストを行っています。これがシナリオです。ドロップダウンで値を選択すると、正しい URL にリダイレクトされます。
これがテストです (campaign.test.js):
これはモジュールです (campaign.js):
私のテストでは、新しい OPTION 要素を作成し、属性を選択して値を設定しました。
これを change イベントの currentTarget として渡し、trigger() に送信するにはどうすればよいですか?
または、これを行う簡単な方法はありますか?
私はこのテストに失敗しました。エラー: 関数が「campaign/test_campaign」で呼び出されたと予想されます。true。
requirejs - requirejsモジュールを使用するjs-test-driverテストを実行することは可能ですか?
私はrequirejsとjs-test-driverを一緒に使用しようとしてきましたが、それを機能させることができません。
私はルートでこのような最小限の構成を持っています:
「src/main / js / greeter.js」ファイルはばかげたモジュールを定義します:
そして、私はrequireに"src / test / js /greeterTest.js"のgreeterモジュールをロードさせようとしています:
これを実行すると、Greeterの作成時にmyappが定義されていないため、エラーが発生します。
この場合、requireを構成する方法はありますか?私は試した :
- baseUrlプロパティをfile:///....のように設定して、ファイルの場所を指定します
- ゲートウェイ構成を使用してrequirejsが実行する可能性のあるリクエストをプロキシします(ただし、jsファイルを提供するためにサーバーを実行していないため、file:///を使用する必要がありました)
他に試してみるべきことはありますか?
ありがとう
requirejs - JsTestDriver + RequireJS + QUnit を使用したテスト
多くの検索とかなりの試行の後、選択したツールの組み合わせにはそれがないように思えます。私は間違っているのが大好きです。
さて、技術スタックはタイトルの通りです。拡大するために、
- すべての「クラス」のバックボーン
- バックボーン エンティティ間の依存関係を読み込んで管理するための RequireJS
- QUnit (テストも RequireJS モジュール)
- コマンドライン自動化のための JsTestDriver
セットアップとコード スニペット
jsTestDriver.conf
tests.js
サーバー起動コマンド (JSTD JAR と同じディレクトリから)
実行中のコマンドをテストします (JSTD JAR と同じディレクトリから)
何が機能しますか?
最初の同期テストは行います。
何がうまくいかないのですか?
2 番目の非同期テストは機能せず、タイムアウトします。
エラー
Chrome コンソール
コンソール
ノート
ここから最新の QUnit アダプターをダウンロードしました。また、動作していると思われる他のアダプターも試してみましたが、役に立ちませんでした。
質問
これは可能ですか?もしそうなら、誰かがその問題に光を当ててくれますか?
ありがとうございました。
更新 (08.04.14) :
カルマ。それだけです。
static - js-test-driverによって提供されない静的ファイル
js-test-driverを使用していくつかのテストを実行しており、htmlドキュメントに対していくつかのコードをテストしたいと思います。これをiframe内の現在のドキュメントに読み込んで、コードをテストしたいと思っていましたが、ファイルを取得するのに問題があります。
私のディレクトリ構造は次のとおりです。
- simpleJsTestDriver
- aFile.html
- aTest.js
- jsTestDriver.conf
- jsTestDriver.jar
- someCode.js
afile.html
jsTestDriver.conf
実行java -jar JsTestDriver.jar --port 9876 --runnerMode=DEBUG
してナビゲートすると、次のようになりhttp://localhost:9876/aFile.html
ます。
最新バージョンのjs-test-driver(1.3.4.b)を使用しています。1.3.4.aには静的ファイルが提供されないというこの問題があるようです。aFi.html
confファイルの名前を変更してエラーをスローすると、サーバーがファイルを正常に検出することを知っています。
javascript - JsTestDriver の basePath を使用してフィクスチャ データをロードする場所を指定する
HTML フィクスチャ データを JsTestDriver テスト環境にロードしようとしています。jsTestDriver.conf
ファイルが作業ディレクトリの最上位にある場合は動作しますが、サブディレクトリに配置してbasePath
JsTestDriver の機能を使用しようとすると動作しません。誰かがこれを機能させましたか?もしそうなら、私は何を間違っていますか?
最初に動作するディレクトリ構造:
jsTestDriver.conf は次のようになります。
server.sh と test.sh は、それぞれサーバーとテストランナーを呼び出します。
サーバー.sh:
test.sh
そして、次のように dom.fixture.test.js コードにフィクスチャをロードします。
これにより、fix.html に html が正常に返されます。これを DOM にロードする必要があります。
しかし、jsTestDriver.conf ファイルを conf ディレクトリにプッシュすると、JsTestDriver に組み込まれている jetty サーバーが、絶対パス ( ) を使用せずに fix.html ファイルを見つけることができないようです/test//$HOME/javascript/jstd/fixtures/fix.html
。デフォルトでは、JSTD は、/test
Jetty のルートが jsTestDriver.conf ファイルを配置した場所に相対的であると想定します。おそらく、設定basePath
により、それを変更できるはずです。
失敗する試みは次のとおりです。
jsTestDriver.conf が conf ディレクトリにあることを除いて、ディレクトリ構造は同じです。
jsTestDriver.conf 内のパスはすべて、次のディレクトリになるように調整されています。
また、server.sh と test.sh には、次の 2 つのコマンド ライン スイッチが追加されています。
残りは同じです。
エラーは次のとおりです。
バージョン 1.3.5 と 1.3.4.b で試しました。同じ結果です。この謎を解く手助けをしてくれる人に感謝します。
javascript - JsTestDriverテストは、1.3.5にアップグレードした後に中断します
1.3.4からバージョン1.3.5にアップグレードした後、未定義の変数を参照すると、テストが失敗します。この動作を無効にする方法の提案はありますか?js strictモードに関連していると思います。デフォルトでこれを有効にしますが、無効にする方法を見つけることができません。
JsTestDriver.confファイルの一部:
program.js:
dialog.js:
エラーメッセージ:ReferenceError:Program is not defined
testing - JS テストドライバーでのテストケースの非同期実行
JS テスト ドライバー サーバーの同じインスタンスで、異なる JS TestCases を並列 (非同期) に実行する CI ビルド サーバーがあります。テスト ケースは互いに独立しており、互いに干渉してはなりません。これはJSテストドライバーを使用して可能ですか?
現在、これが可能かどうかを確認するために、2 つのテスト ケースを作成しました。
テスト ケース 1:
テスト ケース 2:
そこでハングすることを確認するために、テスト ケース 1 にアラート ステートメントを追加しました。
次のコマンドで JS テスト ドライバー サーバーを起動しました。
次のように、両方のテスト ケースの実行を開始しています。
テスト ケース 1 が実行され、アラート ステートメントでハングします。テスト ケース 2 は例外 (BrowserPanicException) で失敗します。2 番目のテスト ケースが単独で実行された場合に合格するため、conf ファイルは適切です。
最初のテスト ケースがまだ実行されている間に、2 番目のテスト ケースに合格するために必要な構成変更はありますか?