問題タブ [ember-qunit]
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.
authentication - Ember App Kit 内で ember-simple-auth をテストする
Ember アプリの統合/承認テストを実行しようとしています。具体的には、ユーザー認証 (ログイン フォームの送信など) と、認証されたユーザーを必要とする保護されたページ/状態をテストしています。
私のアプリに関する一般的な注意事項:
- Ember アプリ キットの使用
- 認証にember-simple-authを使用する
- Deviseオーソライザーを使用してヒットするember-simple-authフォームのAPIスタブがあります。これらは、ブラウザー内でアプリを実行するときに正常に機能します。
3 つの問題があります。
1. オーセンティケータとエフェメラル ストレージの工夫
ember-simple-auth API からは、テストにエフェメラル ストレージを使用することを指します。私はそうしました、このように。ただし、セッションはまだローカル ストレージに保存されているようです。各テストで実行しないとlocalStorage.clear()
、最初のテストの後に各テストを実行するときにログインしたままになるため、セットアップ/ティアダウン テストが失敗します。
アプリで Devise オーセンティケーターを使用している場合、各テスト間でセッションをローカル ストレージに保存しないようにすることはできますか?
2. 複数の受け入れテスト
複数のユーザーにログインしようとするとtest()
、テストがスピンオフして無限ループになります。最初のテストはパスしますが、2 番目のテストがログイン フォームを送信すると、テスト スイート全体が停止して再起動します。
統合テスト #1
統合テスト #2
3. EAK api-stubs & Testem
EAK の api- stubs は Testem で使用できないようです。そのため、これらの受け入れテストの「ログイン」プロセスをコマンド ライン/Testem 経由で実行すると失敗します。
sinon.js をセットアップしようとしましたが、上記の問題により、実際に正しく機能しているかどうかを判断できませんでした。ember-simple-auth を使用してユーザーのログインを正常にスタブ化する最良の方法は何ですか? Testem に EAK の API スタブを使用することは可能ですか?
javascript - 別のテンプレートで別のコンポーネントを使用する ember コンポーネントのテスト
別のコンポーネントを使用する emberjs コンポーネントをテストしようとしています。moduleForComponent メソッドで ember-qunit を使用しています。そこで、私のコンポーネントには別のコンポーネントが必要であることを定義します。['component:my-kitten'] が必要です。
しかし、別のテンプレートでコンポーネントを使用すると、そのコンポーネントのテンプレートが読み込まれないようです。
emberjs ガイドの jsbin の例を変更しました。
コンポーネントでレイアウトとして定義されたテンプレートを使用した作業例
レイアウトを別のテンプレートに移動した例が機能しない
ember.js - 非同期リレーションシップを呼び出すコントローラー アクションの単体テスト
私は2つのモデルを持っていProgram
ますProject
. Aには sProgram
がたくさんありProject
ます。
プログラム内のすべてのプロジェクトを表示するArrayController
責任があります。レンダリングされた各プロジェクトにはdestroy
リンクがあります ( での簡単なアクションArrayController
)。
リレーションシップは非同期であるため、呼び出すとprogram.get('projects')
promise が返されます。
私は Firebase (およびemberFire
) をバックエンドとして使用しており、次のような関係を保存しています
スタブ/モック ライブラリにember-qunit
andを使用しています。sinon
これをテストする最初の試みは、 を非常に頻繁に使用しsinon.spy()
ます。
テストでモデルのインスタンスをインスタンス化する明確な方法がないため (少なくとも私は知っています)、新しい Ember オブジェクトを作成しています。アクションで呼び出されるすべての関数は を使用するsinon.spy()
ため、実際に呼び出されたというアサーションを行うことができます。
Rails のバックグラウンドからすると、これは CoffeeScript の 4 行の比較的単純なテスト コードのように思えます。
いずれにせよ、私の全体的な質問は次のとおりです。
非同期コールバック関数removeObject()
で実際に呼び出されたものを (sinon またはその他の方法を使用して) テストするにはどうすればよいですか?program.projects
また、上記のようにアサーションを作成できるように、すべてのテストで新しい Ember オブジェクトを作成せずにモデルをスタブする簡単な方法はありますか?
javascript - hasMany 関係を持つモデルの Ember.js 単体テスト計算プロパティが TypeError を生成する
これを使用して:
Ember-qunit を使用したテスト。
そのため、モデルの計算されたプロパティの単体テストを作成しようとしています。計算されたプロパティは、hasMany 関係からのデータに依存します。
したがって、私のモデルは次のようになります。
そして、私のテストは次のようになります。
pushObject を実行しようとすると、次のエラーが発生します。
参照している ember-data の行は次のとおりです。
今、私はいくつかの異なることを試しましたが、まだ運がありません.
まず、一度に作成してみました。
しかし、それは次のように機能しません。
そこで、後で Ember.run ループでロールを設定してみました。
そして、同じ読み取り専用エラーが発生します。
そこで、ロールと同時にコンテンツを設定してみました:
そして、私は
だから今、私は上で定義したコードに行きます:
そして TypeError を取得します。私は途方に暮れています。何が間違っているのか、バグがあるのか わかりません。
私より賢い人はいますか?
ここにjsbinがありますhttp://jsbin.com/bidus/1/
ありがとう!
** 更新 1 **
kingpin2kが彼の答えで言っていることを見て、私は自分のアプリで自分の残り火のソースを見ました。私は rubygem ember-sourceを使用しているので、@kingpin2k が使用した「デバッグ」バージョンとほぼ同じソースを使用しています。ember-source バージョンにはいくつかの追加機能がありますが、すべてのテスト ヘルパーはまだそこにあります。
だから私は自分のコードを見始めました。ポップアップするエラーは、逆の関係に関係しています。
そして、私のjsbinを見て、ロールモデルにbelongsTo('user')
@kingpin2k が使用したのと同じ ember ソースを使用した失敗した jsbin http://jsbin.com/bidus/2/を次に示します。ロールモデルの属している関係が原因で失敗しています。ユーザーを知る必要がある役割は必要ないので、そこにあるべきではないことに気付きました。したがって、その関係を削除すると、すべてが緑色になりました。
これで、@ kingpin2k と同じjsbin http://jsbin.com/bidus/3/が渡されました。
しかし、それは、なぜその belongsTo がそれを barf にしているのかという疑問を投げかけます。私が知る限り、そこにいれば問題ないはずです。多分@kingpin2kこれについてもっと光を当てることができますか?Ember は自分でそれを理解できると思われるため、モデルの役割に逆を追加する必要はありません (そして、キックとクスクスのために追加しようとしましたが、コードはまだバーフです)。私は、ember-data ソースにバグがあると考えがちです。
javascript - コントローラーの Ember.js 単体テストでモデル データを設定する方法
コントローラーをテストするための単体テストを作成しようとしています。モデルで計算されたプロパティを使用する計算されたプロパティがあります。
データをモデルにロードするためのテストをセットアップする方法がわかりません。
ここに私のモデルがあります:
そして、ここにコントローラーがあります:
私のテストでは、コントローラーのコンテンツをセットアップするときに次のようにします。
そして、それは明らかに正しくロードされません。その学生のメソッドを呼び出すと、次のようになります。
すべてのユーザーを返します。
ここにjsbinがありますhttp://jsbin.com/zafod/1/
jsbin では、すべてのユーザーをフィルタリングすると、モデル データが読み込まれないため、 isInstructor 計算プロパティが呼び出されることはありません (私は推測します)。その呼び出しを行うと、未定義に戻ります。
では、そのデータをモデルにロードするにはどうすればよいでしょうか?
ありがとう!
unit-testing - 複数のコントローラーを含むファイルにある、emberコントローラーをQunitテストしますか?
だから、私は Ember コントローラーを QUnit テストしようとしています。問題は、コントローラーが複数のコントローラーを含む coffeeScript ファイル内にあることです。
今、残り火のテストガイドは言う、コントローラーをテストするには、次のように「moduleFor」ヘルパーを使用する必要があります。
moduleFor(fullName [, description [, callbacks]])
私の場合、フルネームは "CustomersIndexController" ですが、それ自体が複数のコントローラーを含む "customers_controller.coffee" に含まれているため、テストで問題が発生しました。
オンラインで無限に掘り下げた後、リゾルバーは「デフォルトのmyModelのエクスポート」が提供する名前ではなく、ファイル名のみを気にすることがわかりました(間違っている場合は修正してください)
より明確にするために、ここに私の「customers_controller.coffee」があります:
そして、ここにcustomers-controller-test.coffee
ファイルがあります:
私は自分の脳が生み出すことができるすべてのアイデアを試しました...運がなければ(コントローラー名をキャメルケースからダッシュ化、絶対パスに変更し、customers_controller.coffeeをインポートしようとさえしました)、しかし私は得続けます:
ヘルプ/アドバイス/リンクは大歓迎です。
javascript - リレーションの依存関係を持つ Ember モデルの計算されたプロパティをテストする方法は?
Ember モデルをテストするために Qunit テストを書いていますが、リレーションの依存関係 (計算されたプロパティが別のモデルの計算されたプロパティをトリガーする) を持つ計算されたプロパティをテストするのに苦労しています。
テスト中のモデル (CoffeeScript):
会議モデル:
今、テストcustomerPhones
しfirstCustomerFullName
ていて、本当に苦労しています...
私のテストは次のようになります。
ここで、このテストでいくつかの手法を使用しました。これは、Stack Overflow の回答で見つけましたが、今は見つけられないようです。
数日前は完全に機能していましたが、今では(私が知っているのはナンセンスに思えます)テストを実行するたびにエラーになります:
アサーションに失敗しました: この関係に「ミーティング」レコードを追加することはできません (「ミーティング」のみが許可されます)
エラーの場所も、修正方法もわかりません。一日中遊んでいて、結果はありません。
どうすればこれを解決できますか?