問題タブ [jasmine2.0]
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 - ジャスミン時計の仕組みは?
関連する部分を見つけるために何時間もコードを読みたくないのですが、ジャスミンがどのように時計を実装しているかに興味があります。興味深い点は、同期テスト コードを使用して非同期コードをテストできることです。私の知る限り、ES5 をサポートする現在の node.js では、これは不可能です (非同期関数は ES7 で定義されています)。estraverse のようなもので js コードを解析し、同期テストから非同期テストを構築しますか?
私が話していることのほんの一例:
ここでexpect(i).toBe(1);
は、コールバックにある必要があります。
angularjs - beforeAll で clear() を呼び出すと分度器 2.0 で誤動作する
分度器 1.8 から分度器 2.0 にアップグレードしました。it ブロックでテスト シナリオを実行する前に beforeAll (jasmine 2.0) を使用してアプリにログインすると、奇妙な動作が見られます。element.clear() への最初の呼び出しが最後に行われているようです。私はこれが起こるのを見ています:
- "teacher01" が usernameFld に入力されます
- InstitutionFld がクリアされます
- 「school01」はinstitutionFldに入力されます
- passwordFld がクリアされました
- passwordFld に「teacherpassword」を入力
- usernameFld がクリアされます
- loginBtn がクリックされた
- usernameFld が空白であるため、テストは失敗します
誰かが私が間違っていることを教えてもらえますか (以下のコードを参照)?
ノート:
directConnectに切り替えてみました。clear() と sendKeys() を別々の行に分割しようとしました。どちらも役に立たないようでした。
同じコードを使用して分度器 1.8.0 にロールバックすると、この問題は発生しません。usernameFld が最初にクリアされ、次にユーザー名が usernameFld に入力され、テストが正常にログインできるようになります。ログイン コードを beforeAll から "it" ブロックに移動すると、テストも期待どおりに動作します。
passwordFld は password タイプの入力であり、loginBtn は単なるボタンであることに注意してください。これは非角度 Web ページのテストです。jasmine 2.0、chrome browser 41.0.2272.101、firefox 36.0.4 を使用し、テスト スクリプトから Selenium サーバーを起動しています。
HTML:
conf.js:
テスト:
jasmine - カスタム Jasmine マッチャーをテストするには?
スペックを作成したいJasmine 2.x用のカスタムマッチャーをいくつか作成しました。ほとんどのプログラマーは、マッチャーをテストに適用して、アウトコードがポジティブかどうかを検証するだけでマッチャーをテストします。
たとえば、.toEqual
「カスタム」マッチャー:
ただし、失敗した場合についてもマッチャーをテストしたいと思います。たとえば、この方法で、マッチャーが失敗したときに生成されるメッセージをテストしたいと考えています。
コード例の変数matcher
は、 を使用して追加したマッチャー関数ですjasmine.addMatchers({ toEqual: matcher })
。
グローバル空間を汚染したくないので、スペックでマッチャーを利用できるようにする方法がわかりません。デフォルトの jasmine マッチャーが含まれており、いくつかのオブジェクトを介して仕様jasmine.matchers
に追加されます。$j
したがって、実際の主な質問は次のとおりです。Jasmine に追加したカスタムマッチャーはどこに保存されますか? 仕様のためにそれらを取得できますか、それともクロージャーに隠されていますか?
編集
addMatchers
を呼び出しているようでenv.addMatchers
、マッチャーを にプッシュしrunnableResources[currentRunnable().id].customMatchers
ます。RunnableResources はクロージャーです...
javascript - Jasmine Spy のリセット コールが返されない
Jasmine (2.2.0) スパイを使用して、特定のコールバックが呼び出されているかどうかを確認しています。
テストコード:
これは期待どおりに機能します。しかし今、私は2番目のレベルを追加しています:
done
どうやらコールバックが呼び出されないため、このテストは返されません。行を削除するspy.reset()
と、テストは終了しますが、最後の期待に明らかに失敗します。ただし、callCount
フィールドはundefined
ではなく のようです2
。
angularjs - Jasmine2 で分度器レポートを作成する方法
ごく最近、Protractor ライブラリを使用して angularjs サイトをテストし始めました。以下の 2 つのライブラリを使用して HTML レポートを作成しようとしましたが、どちらの場合もエラーが発生しました
https://www.npmjs.com/package/protractor-jasmine2-html-reporter および https://www.npmjs.com/package/protractor-jasmine2-screenshot-reporter。
プラットフォーム:- Windows 7
インストール cmd:- npm install -g 分度器-jasmine2-html-reporter
エラー: モジュール 'protractor-jasmine2-html-reporter' が見つかりません
Config.js
何か不足している場合はお知らせください。前もって感謝します。
angularjs - コンソールにメッセージを表示して、分度器に強制的にテストをパスまたはスキップさせることはできますか?
いくつかの外部システム依存関係を持つシステムを使用しています。これらの外部システムは、特定の SDLC 環境 (local、dev、qa、および prod) にのみフックされます。これらの制限により、実行前に分度器テストのいくつかに環境チェックを配置して、それらがどの環境にあるかを判断しました。
例えば:
「テスト A」が実行されていますが、QA 環境でのみ有効になっている「外部システム 1」との対話に依存しています。したがって、「テスト A」が Local、Dev、または Prod で実行されている場合、テストは失敗し、fail() を使用してコンソールにメッセージが表示されます。
私の質問は... Fail()を使用するのと同様のメッセージでテストを強制的に合格またはスキップする方法はありますか? テストが実際に合格または失敗した機能の原因と、レポートの環境依存性のためにテストが単にスキップされた場合とを区別しようとしています。
「fdescribe」または「fit」を使用すると、技術的にテストを「スキップ」できることを知っています。コンソールは以下のようなものを出力します
テストからそのスキップ機能を呼び出すにはどうすればよいですか?