0

コマンド ラインから Web コンポーネント テスターを使用して、Polymer コンポーネントでフィクスチャ ベースのテストを実行しています。テストは Chrome (v.47) では成功しますが、Firefox (v.42) では失敗します。問題は、Polymer コンポーネントの一部の変更オブザーバー関数で、予想されるデータが Chrome で受信されているが、Firefox では空であるため、後者でテストが失敗することです。重要なコードは次のとおりです。

ポリマー コンポーネント: Polymer({ is: 'コンポーネント名',

  properties: {
    data: {
    type: Array,
    observer: '_dataChanged'
  },
  _dataChanged: function() {
    process(this.data)  // this line
    ...
  },
  ...

Chrome では、上記の「この行」の「this.data」の値は、html フィクスチャで渡されたものに関係なく、空ではありません。これにより、テスト ケースが成功します。しかし、Firefox では、イベントから受け取った「this.data」の値が空の配列 [] であり、上記のテストが失敗します。これが事実である理由はありますか?

また、「WebComponentsReady」イベントのイベント リスナー内にテスト スイートをラップしようとしましたが、web-component-tester は、そのようなイベントが発生した後にのみスイートが開始されることを既に保証しています。このアプローチは Chrome では引き続き機能しますが、Firefox では失敗します。

4

2 に答える 2

1

次のように、_dataChanged メソッドを変更して、データ値を引数として取ります。

properties: {
    data: {
    type: Array,
    observer: '_dataChanged'
},
_dataChanged: function(data) {
    process(data);
...
}

オブザーバーが起動されたときに、プロパティの値が this コンテキストで設定されることをPolymerが保証しているとは思いません。

于 2015-12-09T02:03:09.933 に答える