2016-01-19 167 views
1

我遇到這個問題:茉莉花放入答應

Expected 2 to equal 'Promise::6492 {[[PromiseStatus]]: "pending"}1'. 

我的代碼如下所示:

規格:

this.allRows = element.all(by.name('row')); 

茉莉花

var prevRowCount = this.allRows().count() 

this.addRow(); 

expect(this.allRows.count()).toEqual(prevRowCount+1); 

如何我可以添加一個this.allRows.count ()返回?

回答

1

量角器的ElementFinderElementArrayFinder圍繞硒的WebElement,因此他們rely on promises heavily

量角器provides an adapter for Jasmine,所以後者可以擁抱它的承諾性質,並在expect和匹配器中透明地展開承諾。

因此,規範應該堅持用手解開承諾。或者承諾可以直接匹配。它成爲一個簡單的任務與ES5:

expect(this.allRows.count()).toEqual(prevRowCount.then(function (count) { 
    return ++count; 
})); 

而且它與ES6語法糖更方便:

expect(this.allRows.count()).toEqual(prevRowCount.then((count) => ++count)); 
2

你必須明確解決prevRowCount承諾:

prevRowCount.then(function (prevRowCount) { 
    this.addRow(); 

    expect(this.allRows.count()).toEqual(prevRowCount+1); 
}); 

注意,你不需要爲新獲得的行做同樣的內部算this.allRows.count()因爲expect()將隱含解決這個問題前檢查期望。