2017-03-08 14 views
1

getText()関数の外部に変数を保存して、テストの後ろの値と一致させることができます。例:分度器:getText()関数の外部で変数を保持する

Pageオブジェクトファイル:

this.numberOfAllLines = element(by.id('all_lines')); 
this.tableCell = element(by.css('.table_results_lines')); 
this.sumOfAllLinesText = element(by.id('sum_lines')); 

specファイル:

var numberOfLines = ''; 
var newNumberOfLines = ''; 

describe(... 
    it(... 
     page.numberOfAllLines.getText().then(function(num) { 
      numberOfLines = num; 
     }); 

     newNumberOfLines = numberOfLines + 10; 

     expect(page.tableCell.getText()).toEqual(newNumberOfLines); 

     // doing some clicks 

     expect(page.sumOfAllLinesText.getText()).toEqual(newNumberOfLines); 
    }); 
}); 

これはHow do I return the response from an asynchronous call?に答えていません。

答えて

1

このコードnewNumberOfLines = numberOfLines + 10は、非同期であり、numberOfLines = num;の割り当てさえ実行される前に実行されます。

あなたがしていることは正しいです。比較する値を保持するグローバル変数を持つ。しかし、割り当てられたコードはgetText()の連鎖約束の中に入れてください。

it(... 
     page.numberOfAllLines.getText().then(function(num) { 
      numberOfLines = num; 
      newNumberOfLines = numberOfLines + 10; 
     }); 

     expect(page.tableCell.getText()).toEqual(newNumberOfLines); 
+0

私はまだそのようなノブです。ありがとう、これは私の問題を解決! – jurijk

+0

ええ..非同期は常に厄介です:) – AdityaReddy

+0

この例のgetText num; }); page.winPrice.getText()。then(function(price){ \t cost = price; }); priceSum = numberOfLines * cost; expect(page.tableCell.getText())。toEqual(priceSum); 'これは、分度器の非同期性のために可能ですか? – jurijk

関連する問題