平,
我正在使用量角器来运行e2e测试,并希望有类似的东西:
expect(element(by.model('someModel')).getText()).toContain(asyncMethodResult());
我想避免这样做:
asyncMethodResult().then(function(result){
expect(element(by.model('someModel').getText()).toContain(result);
});
也可能在beforeEach中运行异步请求,该请求也会“阻止”进一步执行,直到完成
可行吗?是https://www.npmjs.com/package/wait.for这样做的唯一方法吗?
[更新]为了回答:
it('test spec', function () {
var expectFn = function (x, t) {
var deferred = Q.defer();
setTimeout(function () {
console.log('Timeout complete:', x, t);
deferred.resolve(x);
}, t);
return deferred.promise;
};
expect(expectFn(3, 1000)).toEqual(expectFn(4, 2000));
}
在以下情况下正确传递或失败(取决于x值):
browser.manage().timeouts().implicitlyWait(Y); //where Y > promise timeout value
在这种情况下,量角器等待'Y'毫秒,然后比较值,否则比较总是通过。
如果implicitWait小于超时,那么它总是会立即传递
答案 0 :(得分:3)
您的第一个案例(expect(...).toContain(asyncMethodResult())
应该已经有效。请参阅示例测试here。
也可以在beforeEach
块中运行异步请求。这是一个例子:
beforeEach(function(done) {
doSyncStuff();
doAsyncStuff.then(done);
});