問題タブ [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 - ジャスミンの call.length と callCount は定義されていません
Jasmineを使用して Chrome 拡張機能をテストしようとしていますが、期待どおりに動作するのに問題がcalls.length
あります。callCount
どちらの場合も を返しundefined
ます。
コードと仕様のサンプルを含めました。役立つ場合は、残りのコードを次に示します。https://github.com/DruRly/kamikaze/tree/closeIdleTab
再現方法:
git clone https://github.com/DruRly/kamikaze/tree/closeIdleTab
cd kamikaze
open SpecRunner.html
spec/kamikazeSpec.js
src/kamikaze.js
angularjs - Jasmine 2.0 を使用した非同期テストで「$digest が既に進行中」を取得する
$digest
ダイジェスト サイクル中にまたはを手動で呼び出す$apply
と、「$digest は既に進行中です」というエラーが発生することはわかっていますが、なぜここでエラーが発生するのかわかりません。
これは をラップするサービスの単体テストです。この$http
サービスは十分に単純で、サーバーへの重複呼び出しを防止するだけでなく、呼び出しを実行しようとするコードが期待どおりのデータを取得できるようにします。
単体テストも非常に単純で$httpBackend
、リクエストを期待するために使用します。
done()
これは、「$digest already in progress」エラーで呼び出されるとすぐに爆発します。理由がわかりません。done()
このようなタイムアウトでラップすることでこれを解決できます
つまりdone()
、 $digest が完了した後にキューに入れられて実行されますが、それで問題が解決する間、私は知りたいです
- そもそもAngularがダイジェストサイクルにあるのはなぜですか?
done()
呼び出しによってこのエラーが発生するのはなぜですか?
Jasmine 1.3 でまったく同じテストをグリーンで実行しました。これは、Jasmine 2.0 にアップグレードし、新しい async-syntax を使用するようにテストを書き直した後にのみ発生しました。
angularjs - 引数を使用した AngularJS での単体テストの約束
私たちはサービスの単体テストを行っており、依存サービスの引数を持つメソッドをスパイするという問題に直面しています。
ServiceA の単体テストを作成しています
ServiceA.js
ServiceB.js (ファクトリーです)
単体テスト コード
ServiceA から ServiceB の getId メソッドをスパイしています。 ServiceB を関数としてモックした場合、以下のエラーが発生します
エラー: jasmineInterface.spyOn に getId() メソッドが存在しません
serviceB をオブジェクトとしてモックすると、エラーが発生します
そして、このシナリオで約束をテストするかどうかはわかりません。
javascript - 解決または拒否を期待しない約束
AngularJs Service の 1 つをテストするために、単体テストを作成していました。
これが私が思いついたサンプルコードです:
延期が解決されたか拒否されたかを確認したいだけです。期待が実際には明示的ではないため、本当に満足できるとは思いません。
遅延が拒否または解決されたかどうかを確認するこれよりも良い方法はありますか?
ajax - done を実際の実装に渡さずに done を呼び出すことはできますか?
私はいくつかのジャスミン テストを作成し、mockjax を使用して ajax 呼び出しをモックしています。ジャスミンを非同期で動作させるには追加の作業が必要であることは知っていますが、私のソリューションは好きではありません。
' ' を実際の実装に渡しdone
、ajax リクエストの promise 内からこれを呼び出しています。
すべての例は、setTimeouts を「シミュレーション」として使用しているように見えますが、これは私の意見では完全には役に立ちません。
理解に役立つコードを次に示します。
ジャスミン
実装
私はこれについてすべて間違っていますか?
繰り返しますが、ジャスミンからビューモデルに渡さずに、mockjax / ajax が .done() であることをジャスミンに知らせたいと思いdone
ます。
jasmine - Jasmine 1.3 から Jasmine 2.x チート シート
いくつかの単体テストを Jasmine 1.3 から 2.x に移行しています。いくつかの単純なコマンドのクイック リファレンス チート シートがあることを期待していました。見つけられなかったので、これまでに持っているものを投稿すると役立つと思い、他の人が貢献できると思いました.