問題タブ [wct]
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.
polymer - Polymer で動的にレンダリングされる要素の単体テスト
概要
dom-if
内で動的にレンダリングされる DOM 要素は、dom-repeat
<templates>
非同期でレンダリングされるように見えるため、単体テストが少し面倒になります。
ポリマー成分
テスト
失敗したように見える理由:
dom-if
/をトリガーするボタンをクリックするとdom-repeat
、要素が同期順序でレンダリングされません。
およびその
dom-if
後続/ネストされたdom-repeat
レンダリングは非同期で行われます。さらに悪いことに、
button
それ自体が計算された/バインドされた方法でクラスを取得します ( に注意class$=
してbutton
ください)。
したがって、質問はこれに要約されます。
これらの条件の 3 つすべてをアクティブにするボタンへのクリックをシミュレートした後、クラスの、、および計算されたバインディングを同期順序で強制的にレンダリングすることは可能ですか?dom-if
dom-repeat
ノート:
- テスト ハーネスとして Polymer の公式 WCT を使用しています。
- 私もchai-jqueryを使っています。
- 私も使用しまし
Polymer.dom.flush()
たが、まだ使用していません。 - 代わりに使用できることは承知しています
chai-as-promised.js
が、このような些細な問題のテストに不必要な複雑さが追加されるため、避けたいと思います。
unit-testing - firebase を使用するポリマー Web コンポーネントの単体テスト
Firebase 分散データベースの最新リリースを使用するポリマー Web コンポーネントのオフライン単体テストを構成しようとしています。私のテストのいくつかは合格していますが、合格したものとほぼ同じように見える他のテストは正しく実行されていません。
私の構成を示すプロジェクトを github にセットアップしました。以下にさらに解説を加えます。
サンプル: https://github.com/doctor-g/wct-firebase-demo
そのプロジェクトには、正常に動作する 2 つのテスト スイートがあります。最も単純なのはoffline-test
、Web コンポーネントをまったく使用しない です。これは単に、firebase データベースのオフライン モードを使用して単体テストを実行できることを示しています。このトリックの核心は、以下に示すメソッドにあります。これは、 firebase-server に関する nfarina の作業suiteSetup
から取り上げたトリックです。
すべてのテストにoffline-test
合格しました。
次のスイートはwct-firebase-demo-app_test.html
、同名の Web コンポーネントをテストする です。このスイートには、同様に設定されて合格する一連の単体テストが含まれていoffline-test
ます。依存性注入の考え方に従って、wct-firebase-demo-app
コンポーネントにはdatabase
、firebase データベース参照が渡される属性があり、これはすべての firebase 呼び出しを行うために使用されます。スイートの例を次に示します。
コンポーネントには非常に単純なメソッドもいくつかあります。これは、すぐに説明する壊れた部分に向かって三角測量を行う試みです。このテストに合格したと言えば十分です。
で、次の実装によってサポートされていますwct-firebase-demo-app
。
繰り返しますが、これらはすべてパスします。今、私たちは本当の困惑にたどり着きます。x-element
メソッドを持つ別の要素 の一連のテストがありますpushData
。
このメソッドのテストは、そのスイートで唯一のテストです。
このテストは合格しません。このテストの実行中に、コンソールに次のエラー メッセージが表示されます。
once
いくつかのブレークポイントを設定して実行をたどると、このエラーは呼び出しの後、コールバックがトリガーされる前に発生するように思えます。繰り返しますが、これは、上で説明した にある同じテスト構造では発生しないことに注意してくださいwct-firebase-demo-app
。
それが私が立ち往生しているところです。offline-test
およびwct-firebase-demo-app_test
スイートは正常に動作するのに、この API キー エラーが で表示されるのはなぜx-element_test
ですか? 私が持っている他の唯一の手がかりは、有効な API キーをinitializeApp
構成にコピーすると、代わりにテストタイムアウトが発生することです。
アップデート:
これは、テストを実行したときのコンソール ログの (パッチを適用した) イメージです。
以下のtony19によって提起された問題を説明するために、pushData has an effect
コメントアウトx-element_test
されたコンソールログを次に示します。
templates - MockInteractions アイテムのタップで Web コンポーネント テスターのアイテムが選択されない
<paper-menu>
aに a を設定する要素があり<template dom-repeat>
ます。
<paper-menu>
に何かを追加すると、それを選択できること、および期待どおりにプロパティが更新されることをテストしたいと思います。
動作を適切にテストできません。メニューのアイテムでタップイベントをモックして、確実に発生させたいですcustom-filter-changed
。
で要素を選択するとelement.$.customLabels.select('red')
、custom-filter-changed
イベントは期待どおりに発生します。
を選択して要素を選択するとMockInteractions.tap( Polymer.dom( element.root ).querySelector( 'paper-icon-item[value="red"]' ) )
、要素はテープで留められますが (テストとしてペーパーアイテムにオンタップで接続しました)、要素は選択されません。
MockInteractions.tap によって起動されたタップ イベントにはターゲットまたは srcElement がなく、実際に要素をクリックした場合とはパスが異なることに気付きました。
MockInteractions.tap
実際のユーザー アクションにできる限り近い模倣を使用したいと考えています。
windows - ポリマー テストは Windows マシンで終わらない
Polymer 1.0 を使用してアプリケーションを開発しました。私の開発用コンピューターは Mac で、開発プロセス中に問題は発生していません。
ただし、Windows マシン (Windows 10) でアプリケーションのクローンを作成すると、テストがまったく機能しません。
実行するたびに、polymer test
またはwct
コマンドが端末をブロックし、決して終了しません。
MACOS または Linux では完全に動作します。
gulp - Web Component Tester - 各ビルドでテストを実行する gulp タスク
gulpfile の中に次のようなものを入れたい:
目的は、テスト フォルダーまたは要素フォルダー (Polymer コンポーネントを含む) を監視することです。それらの一部が変更される場合は、各ビルドでテストを実行してください。
私のwct.conf.js:
いくつかのページで上記のコードを見つけましたが、いくつかのテストを追加して端末に入力した後、エラーが見つかりました.tmpフォルダーが更新されず、またはのgulp
ような奇妙なエラーが機能しないためです。テストで意図的にミスをして失敗させたときに正しいエラーも発生したので、何か問題ないように見えますが、まったく問題ありません。Polymer is not defined
ajax.generateRequest
多くのファイルを含む既存のプロジェクトにテストを追加します。空のプロジェクトで同じことをしようとすると、入力するまで同じエラーが発生しましたbower install
。
これがbowerの依存関係の問題である可能性はありますか? または、何が悪いのか分かりますか?gulpfile のコードのこの部分は、目的の効果を実行する権利がありますか?
どうもありがとう。
teamcity - TeamCity で web-component-tester を実行する
wct
誰かがチームシティで実行するのを手伝ってくれませんか? ビルドを構成しましたが、実行時に以下のエラーが発生しますwct
。
polymer - オブザーバーを含む単体テストの設定
オブザーバーを含むいくつかのメソッドの単体テストを作成する方法を理解するのに苦労しています。このように設定された Iron-pages 要素があります
ユーザーが Web ページを変更できるように、対応するボタンをクリックしてアクセスできる Web ページの名前が含まれています。スクリプトノード内にこのように設定されたオブザーバーがあります
私はテストを始めたばかりで、_routePageChanged、_pageChanged、および _show404 関数のテストが必要だと思いますが、それらのテストにどのようにアプローチすればよいかわかりません。クリックされた情報に基づいてページが正しく切り替わることを確認する必要があることはわかっています。おそらく、テストのためにさまざまなクリックをシミュレートしたいのですが、それを行う方法がわかりません。