2016-07-19 18 views
-1

私は変数のスコープに問題があります。下のコードはJasmineとJavaScriptの組み合わせである分度器にあります。私が持っている問題は、householdLabelTextの文字列値を使用して、それをhouseholdArray[i]の値と比較しようとしているということです。Promise、.then()変数は定義されていないと言い続けます

ただし、これを行うたびにhouseholdArray[i]が不定に戻ってきます。私はこれがhouseholdArrayが範囲外のものになるからだと思います。私はプロミス/コールバックの仕組みが正確には専門家ではないので、間違っているかもしれません。誰でも私に範囲内のhouseholdArrayを維持するためのいくつかのヒントを与えることができれば、私はそれを感謝します。

it((testNumber += 1) + '---' + suiteName + '---' + 
'It should dispaly the appropraite text for the rating factors.', 
    function() { 

     var householdArray = ['ACCIDENTS', 'VIOLATIONS', 'DRIVERS', 'VEHICLES', 'TENURE']; 

     element.all(by.repeater('item in vm.policyDetails.householdDetails')).then(function(householdDetails) { 

      for(var i = 0; i < householdDetails.length; i++) 
      { 
       householdDetails[i].element(by.binding('item.label')).getText().then(function(householdLabelText) { 
       console.log(householdArray[i]); 
       expect(householdLabelText).toEqual(householdArray[i]); // householdArray[i] is undefined 
       }); 
      } 
     }); 
    }); 
+0

ステップ・デバッガーの使用方法を学ぶ必要があるため、このトピックをオフトピックとしてクローズすることにしました。ステップ・デバッガーはあなたの友人です! –

+0

問題を引き起こすコードの例([codepen](codepen.io))を投稿できますか? – Trevor

+0

@JarrodRoberson私にはIDEやステップデバッガを使用する方法がありません。分度器のためのステップデバッガをお勧めしたら、私はそれを使用します。 – DrZoo

答えて

0

それはテスト機能ブロック内で宣言されていて、それが絶対的にスコープ内にある必要がありますので、あなたは、ネストされた関数の中でそれを使用しているので、householdArrayの範囲で結構です。

iの値は、と異なる可能性があるため、配列境界を超えて読み取られる可能性があります。これは私がこの例でチェックする最初のものです。

関連する問題