問題タブ [meteor-jasmine]
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.
meteor - sanjo:jasmine および Blaze.render との統合テストの適切な方法
sanjo:jasmine
アプリのテストに使用しています。クライアント側の統合テストとBlaze.render
. alanning:roles
役割の管理に使用しています。
私のテンプレートでは、次のようなものです(簡単にするために最小化しています):
私のテストでは、次のようにします。
匿名ユーザーの最初の一連のテストは問題なくパスし、管理者のログインとログアウトも同様です。ただし、#adminlink
が存在するかどうかを確認するテストは失敗します。これは、要素がテスト内に存在するかどうかをテストする正しい方法のようですが、テンプレートがまだ完全にレンダリングされていないようです。
meteor - ジャスミンはオブジェクトがオブジェクトと等しくないと不平を言っています
ジャスミンを使用していくつかの統合テストを行おうとしています。私は次のことをしています:
しかし、これが実行されると、ジャスミンは次のように文句を言います。
したがって、エラー メッセージから、A は A と等しくないと言っています。これを機能させるにはどうすればテストを変更できますか?
meteor - Meteor / Jasmine / Velocity : ログインユーザーを必要とするサーバーメソッドをテストするには?
速度/ジャスミンを使用して、現在ログインしているユーザーが必要なサーバー側の方法をテストする方法に少し固執しています。ユーザーが stub/fake 経由でログインしていると Meteor に思わせる方法はありますか?
javascript - Meteor Jasmine テストで部分的なユーザー公開のみを取得
管理者ユーザーがアプリのユーザー管理インターフェイスを介してユーザー ロールを変更できることを確認するためのクライアント統合テストがあります。ただし、変更したいユーザーを照会すると、フィクスチャで作成されているにもかかわらず、クエリが空に戻ります。
このテストは次のエラーで失敗します。
TypeError: 未定義のプロパティ '_id' を読み取れません
2 人のユーザーを作成するフィクスチャ ファイルは次のとおりです。
console.log
Jasmine ログでフィクスチャの出力を確認でき、両方のユーザーが表示されます。undefined
changeUserのテスト ログからのログと、完全なコレクション フェッチの現在のユーザーのみの配列。
私が想像できる他の唯一の問題は、出版と購読です。それらに問題はありませんが、見逃している可能性があります。ここに出版物があります:
およびサブスクリプション:
現在のユーザーのみを含むデフォルトの Meteor ユーザー パブリケーションがテスト用に配信されているようですが、ルートを待機するべきではなく、そのルートのユーザー サブスクリプションは、ユーザー リスト全体がパブリッシュ/サブスクライブされていることを意味しますか?
meteor - キュウリとジャスミンの流星速度の共有テスト フィクスチャ
キュウリとジャスミンのテストでフィクスチャを共有するにはどうすればよいですか?
他の jasmine サーバー統合テストで使用できる 1 つの jasmine サーバー統合テストでフィクスチャーを作成できます。しかし、(「ミラー」が異なるためだと思いますか?)キュウリのテストで同じフィクスチャを使用することはできません。Mongo コレクションには、jasmine サーバー統合テストによって作成されたデータがありません。
1 つのオプションは、状態をフラット ファイル (nock) に保存することです。しかし、テスト フィクスチャの共通コレクション (同じミラー上?) を参照する方がはるかに簡単です。これは可能ですか?
javascript - 1 つの Jasmine 記述ブロックで複数の計算を使用すると、トラッカーの反応性がちょうど半分の時間で開始されないのはなぜですか?
Jasmine で反応性をテストすると、いくつかの Tracker 計算が非常に興味深い方法で動作し始めました。ちょうど半分の計算が反応し、残りの半分はそうではありません。
この動作をテストするために私が行ったことは次のとおりです。
だから基本的に:
foo
リアクティブを に初期化しfalse
ます。- 追跡を開始し、到達するのを待っ
true
て、テストがdone()
. - タイムアウトを使用し
foo.set(true)
てテストを解決します。 - もう必要ないので、この計算を停止します。
では、別の変数を使用してまったく同じことを行いましょう。
そこから楽しみが始まります。このテストはまったく同じコードですが、名前が異なり、まったく同じロジックが記述されていますが、計算追跡バーが再実行されないため失敗します。
はconsole.log
それを非常によく示しています:
その計算における fooは: その計算
false
における foo は:true
- 反応性が開始されました!
その計算の棒は:false
[Nothing]
foo
の計算が再実行され、テストが完了したことは明らかですが、 の計算bar
は決して無効にされないため、テストは失敗します。
ただし、これで終わりではありません。新しいリアクティブ変数 (たとえばbaz
) に 3 番目のテスト ケースを追加し、前と同じ手順に従うと (他の変数で初期化し、同じdescribe
関数の最後にテストを追加する)、完全に機能します。
ここで、テストは(1)
成功し、テスト(2)
は失敗し、テストは(3)
成功します。
cat
ここで、同じ手順に従って、たとえば新しいものを使用して 4 番目のテストを追加すると、テスト(4)
は次のログで失敗します。
foo の計算は
false
foo の計算はtrue
bar の計算はfalse
bar は再実行されず失敗
する baz の計算はfalse
baz の計算はtrue
cat の計算はfalse
cat は再実行されず失敗
する
foo
とではなくにbaz
反応しました。bar
cat
私は他の 2 つ (5 番目と 6 番目) でそれを実行しましたが、同じ結果:(5)
成功し、(6)
失敗しました。
「奇数」のテストは成功し、「偶数」のテストは失敗します。
完全再現コード:
なぜこうなった?これらすべてのリアクティブ変数を同じ関数
に保持しながら、この問題を解決するにはどうすればよいですか?describe
ネストされたdescribe
関数を追加しようとしましたが、成功しませんでした。
この問題は、関連のない関数でテストを分離すると魔法のように消えdescribe
ます。そのような方法で回答しないでください。
javascript - meteor-jasmine クライアント側単体テストをデバッグする方法はありますか?
私は小さな流星アプリを書いていますが、同時にTDDを練習しようとしています。デバッガーを使用して Jasmine 単体テストを実行する方法がわからないという小さなハードルに遭遇しました。
テストは[project root]/tests/jasmine/client/unit
、例のように格納されます。
速度に関するドキュメントでは、サーバー側のテストをデバッグする方法について詳しく説明していますが、クライアント側のテストについては言及されていません。
クライアント統合テストをデバッグできます。meteor を開始するとログが記録[velocity] jasmine-client-integration is starting a mirror at http://localhost:51259/.
され、そこに移動することでテストをデバッグできます。しかし、クライアントの単体テスト用にミラーが作成されていないようです。
編集:実際には、クライアント統合テストもデバッグできるようですlocalhost:3000
。開発者コンソールは次のようになります。
また、miscSpec.js にブレークポイントを追加することで、統合テストをデバッグできます。
最後に、Meteor-Jasmine が単体テストの console.log からの出力を に書き込むことを知っています[project root]/.meteor/local/log/jasmine-client-unit.log
。それは役に立ちますが、デバッガーを介してテストを実行できるようにしたいと考えています。
私は使用しています
- 流星 1.2.0.2
- 三条:ジャスミン 0.20.2