問題タブ [ember-testing]

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.

0 投票する
1 に答える
835 参照

unit-testing - Ember Test: 入力フォーカス

ここで起こっている一連の出来事を本当に理解していません。できるだけガイドに従うようにしています。私は持っている:

失敗するだけです: ここに画像の説明を入力

色の変化にトランジションはなく、再実行を押すとパスします。

0 投票する
1 に答える
821 参照

javascript - Ember 統合テスト中にレンダリングされた HTML とコードをデバッグする

コンポーネントのテストを 1 つのページに表示して、一部のメソッド内に挿入しているデバッグを確認できるようにしたいと考えています。

何らかの理由で、テストでデータが正しくロードされていないようで、何がロードされているかを確認したいと考えています。

残念ながら、QUnit は私が入れたものしか表示しません。コンソール ログassertsを表示できるように、テストを 1 つのページに分離して表示する方法があるかどうか疑問に思っていました。

これはテストのスケルトンです:

EDIT:のみを使用して問題が何であるかを理解しましたassert.equal()。1 つ欠けていました$()(jQuery 関数)。例:

レンダリングされたコンポーネントを見て、遊んでいないのは素晴らしいことですassert.equal()

0 投票する
1 に答える
85 参照

javascript - Ember - テストでヘルパーを作成できません

モデルをシミュレートするために、テスト用のヘルパーを作成しようとしています。

ただし、次のエラーが表示されます。

: makeInventoryObjects が定義されていません

私のテストヘルパー:

ヘルパーの私の開始アプリには含まれていますapplication.injectTestHelpers();

失敗しているテスト:

インポートのコメントを追加するたびに、次のエラーが発生します。

: _frontendTestsHelpersMakeInventoryObjects["default"] は関数ではありません

0 投票する
2 に答える
1606 参照

unit-testing - Ember コントローラーの単体テスト方法

コントローラーの一部である 2 つの別個の関数を呼び出す、ember コントローラーで定義された単一のアクションがあります。アクションメソッドが正しい関数を呼び出したかどうかを確認するために、単体テストでこれらの関数をモックアウトしたいと思います。

私のコントローラーは次のようになります。

実際には、コントローラーは機能しますが、単体テストでは、functionA と functionB は両方とも未定義です。コンソールにログインしようとしましthisたが、functionA と functionB の場所が見つからないため、適切にモックできません。アクションの隣のオブジェクトの最上位にあると思っていましたが、適切に定義されたものしか見つかりませんでし_actionsactionMethod

私の単体テストは以下のようになります

テスト環境でこれらの機能を置き換える方法について誰かアイデアがありますか? または、この機能をテストしたり、コントローラーをセットアップしたりするためのより良い方法はありますか?

  • 編集タイプミス: this.subject から this.subject()
0 投票する
1 に答える
358 参照

javascript - Ember.js コンポーネント統合テスト: グローバル インジェクションとネストされたコンポーネントを操作するには?

シナリオ: 実際のサービスを使用してコンポーネント A を統合テストしたいと考えていますmy-service。すべてのコンポーネントにサービスをグローバルに注入する初期化子があります: application.inject('component', 'myService', 'service:my-service');. コンポーネント A はそのテンプレートでコンポーネント B を使用myServiceし、両方ともテンプレートで使用します。

グローバル インジェクションを再作成するにはどうすればよいですか? 完全なアプリケーションはありません。必要なパラメーターがないため、実際のイニシャライザーをインポートして実行することはできません。this.inject.serviceグローバルアプリケーションコンテキストではなく、テストコンテキストに挿入するため、機能しません。

すべてのコンポーネントのテンプレートを変更して、サービスをずっと下にチェーンすることができます: {{b-component myService=myService}}、そして

しかし、それは最後の手段です。また、グローバル インジェクションを取り除き、すべてのコンポーネントに手動でインジェクトすることもできます。それも最終手段です。

この問題の話をhttps://github.com/emberjs/ember.js/issues/12277まで追跡しました。それはほぼ実装されましたが、Grand Testing Unification https://github.com/emberjs/rfcs/pull/119を支持して閉鎖されました。グランドテストの統一を待っている間に解決策はありますか?

0 投票する
1 に答える
1201 参照

ember.js - Ember - コンポーネントの要素の動的入力値をテストで取得する

したがって、次のような単純なコンポーネントがあります。

そして、私はこのような2つのテストを持っています:

最初のテストはパスしますが、2 番目のテストは失敗します。this.$('.my-input').attr('value')のようundefinedです。なんで?このテストに合格するにはどうすればよいですか?