anglejs – 角度$q.when在Karma单元测试中未解决
发布时间:2020-12-17 09:29:33 所属栏目:安全 来源:网络整理
导读:我使用$q.when来绕过其他的lib承诺. 它的作用就像一个魅力,但是当我尝试在Karma中运行它时,即使我运行$digest,甚至在超时之后,promise也无法解决(done()). 以下是示例代码: describe('PouchDB',function () {var $q,$rootScope;beforeEach(inject(function
|
我使用$q.when来绕过其他的lib承诺.
它的作用就像一个魅力,但是当我尝试在Karma中运行它时,即使我运行$digest,甚至在超时之后,promise也无法解决(done()). 以下是示例代码: describe('PouchDB',function () {
var $q,$rootScope;
beforeEach(inject(function (_$rootScope_,_$q_) {
$rootScope = _$rootScope_;
$q = _$q_;
}));
it("should run",function (done) {
function getPromise() {
var deferred = Q.defer();
deferred.resolve(1);
return deferred.promise;
}
$q.when(getPromise())
.then(function () {
done(); // this never runs
});
$rootScope.$digest();
});
为什么?这是什么原因?我真的不能得到它 更新(解决方法) 我不明白为什么$q.when没有在Karma解决 – 它有一些与nextTick功能,但我无法调试的问题. .factory('$utils',function ($q,$rootScope) {
return {
to$q: function (promise) {
var deferred = $q.defer();
promise.then(function (result) {
deferred.resolve(result);
$rootScope.$digest();
});
promise.catch(function (error) {
deferred.reject(error);
$rootScope.$digest();
});
return deferred.promise;
}
}
})
从
How to resolve $q.all promises in Jasmine unit tests?起,似乎诀窍是:
$rootScope.$apply(); 我只有同样的问题,这对我有用在作出这一呼吁时,承诺得到解决. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
