gle*_*tre 18 javascript angularjs protractor
我正在为Protractor的谦逊Angular应用程序编写一些e2e测试.
我的应用程序工作正常,单元测试通过所有,e2e也使用...直到这一个:
appE2ESpec.js
describe('adding an item', function() {
var items,
addItemButton,
startCount;
beforeEach(function() {
items = element.all(by.css('li.item'));
addItemButton = element(by.id('addItemButton'));
startCount = items.count();
});
it('should display a new item in list', function() {
addItemButton.click();
expect(items.count()).toEqual(startCount+1);
});
});
Run Code Online (Sandbox Code Playgroud)
这就是我写测试的方法,但是,
问题是: items.count()返回一个promise,我知道,但我无法强制Protractor解决它.所以我明白了:
Failures:
1) myApp adding an item should display a new item in list
Message:
Expected 6 to equal '[object Object]1'.
Run Code Online (Sandbox Code Playgroud)
我尝试过的:
items.count().then(function(count) {
startCount = count;
//console.log(startCount) --> "6" Perfect!
});
Run Code Online (Sandbox Code Playgroud)
但最后得到了相同的结果......我不能把它expect放进去then,我也想到了.
附录:
console.log(startCount) 输出:
{ then: [Function: then],
cancel: [Function: cancel],
isPending: [Function: isPending] }
Run Code Online (Sandbox Code Playgroud)
我可以写,.toEqual(6)但每次我需要更改我的应用启动状态时,我都不想重写我的测试.
任何的想法?提前致谢!!
And*_*s D 25
您需要解决承诺,然后执行断言.
量角器将解析您传递给expect()的承诺,但它不能为承诺添加数字.您需要先解决承诺的价值:
beforeEach(function() {
...
items.count().then(function(originalCount) {
startCount = originalCount;
});
});
it('should display a new item in list', function() {
...
expect(items.count()).toEqual(startCount+1);
});
Run Code Online (Sandbox Code Playgroud)