我正在從量角器切換到Nightwatch.js,而且我正面臨着Nightwatch處理承諾的一些困難。如何用Nightwatch履行承諾
舉一個例子,我試圖計算滿足給定條件的元素數量。 count函數是在一個頁面對象,所以從測試本身分開:
頁面對象命令:
countToDoList: function(browser) {
browser.elements('css selector', "input[ng-model='todo.done']", function(result){
return result.value.length;
});
}
,並在測試呼叫:
'Angular - 1' : function(browser) {
var angular = browser.page.angularPO();
var mainPage = angular.section.main;
angular.openMainPage(browser);
var countToDoBoxes = 0;
countToDoBoxes = mainPage.countToDoList(browser);
console.log("countToDoBoxes = " + countToDoBoxes);
browser.end();
}
這將返回「countToDoBoxes =未定義「。基於我在量角器方面的(短)經驗,我認爲這是由於函數沒有履行諾言,因爲它傳遞給「countToDoBoxes」。
有沒有辦法讓這項工作?
如果你希望'browser.elements'返回一個承諾,那麼你或許應該使用'。那麼()'而不是傳遞迴調直。此外,你顯然必須從'countToDoList'方法'返回'。 – Bergi
爲了我自己的利益,你爲什麼要換? – SuperUberDuper
@SuperUberDuper:我在一個不同的項目上工作,並且這個新項目與Nightwatch.js一起工作(不是我的選擇,也不能改變它) – Majuj