Так я пытался получить обещания работать в моих угловых тестах приложений, может кто-нибудь понять, что им делать неправильно здесь продолжает возвращаться:
Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
Я не знаю, если это $ q.
FYI я также попытался it('test', function(done){... done();})
контроллер
(function() {
'use strict';
angular
.module('controller.editor', [])
.controller('EditorController', EditorController);
function EditorController($scope, $q) {
var vm = this;
angular.extend(vm, {
hack: hack
});
function hack(bool) {
return $q(function(resolve, reject) {
if (bool) {
resolve(true);
}
reject(false);
});
}
}
});
Test
describe('EditorController', function() {
var vm, scope, $controller, $rootScope, $injector;
beforeEach(function() {
module('app');
//Inject
inject(function(_$injector_) {
$injector = _$injector_;
$controller = $injector.get('$controller');
$rootScope = $injector.get('$rootScope');
// Create new scope object
scope = $rootScope.$new();
// Bind the controller
vm = $controller('EditorController', {
$scope: scope
});
});
});
describe('#addCustom', function() {
it('test', function(done) {
var aHack = vm.hack(true);
aHack.then(function(bool){
// Resolve
expect(bool).to.be.eq(true);
done();
}, function() {
// Reject
expect(bool).to.be.eq(false);
done();
});
});
});
});
Пожалуйста, убедитесь, что текст точно описывает текущую ситуацию. С опубликованным фрагментом вы действительно получаете сообщение «Ошибка: превышен превышение 2000 мс. Убедитесь, что в этом тесте вызывается обратный вызов done(). '? Вы не используете 'done' в любом месте вашего набора фрагментов. – sgtdck
вернуть обещание должно быть одинаковым, но я его обновил –