【发布时间】:2016-10-10 14:51:08
【问题描述】:
我有一个简单的场景,我想测试我是否能够删除一些对象。所以场景看起来像:
1通过休息添加一些独特的对象(不使用浏览器,我不想在每个/全部之前使用,因为它只针对这个测试)
2 在 Web 应用程序中删除上述对象
所以我写了我的代码的模拟:
it('test promise', function(done) {
console.log('start');
d = protractor.promise.defer();
setTimeout(function() {
console.log("rest call");
d.fulfill('ok');
done();
}, 3000);
console.log('before expect');
expect(d).toBe('ok'); //code should be stoped here till rest above finish
console.log('after expect');
console.log('rest test based on deffer result');
console.log('change tab... find elements... click to delete...');
});
这段代码的输出是:
start
before expect
after expect
change tab... find elements... click to delete...
rest call
如您所见,在我将执行所有 webdriver 操作之后,将运行 rest 调用... 有什么想法吗?
编辑:
我添加了控制流,但它仍然不起作用。代码:
it('test promise', function(done) {
console.log('start');
flow = protractor.promise.controlFlow();
var d = protractor.promise.defer();
var restCall = function _makeRestCall() {
setTimeout(function () {
console.log("rest call");
d.fulfill('ok');
}, 3000);
return d.promise
};
console.log('before expect');
flow.execute(restCall);
// expect(d).toBe('ok'); //version 1 not work
expect(restCall).toBe('ok'); //version 2 not work
console.log('after expect');
console.log('rest test based on deffer result');
});
输出:
start
before expect
after expect
rest test based on deffer result
rest call
【问题讨论】:
标签: angular protractor