Я пытаюсь проверить приложение с помощью Jasmine и получил следующую проблему:
Я посчитаю что-то в функции then
моего обещания. Это тот момент, когда мне нужно проверить свой код.
Вот код моего контроллера:
TestCtrl.$inject = ["$scope", "TestService"];
/* ngInject */
function TestCtrl($scope, TestService) {
$scope.loadData = function () {
TestService.getData().then(function (response) {
$scope.data = response.data;
$scope.filtered = $scope.data.filter(function(item){
if(item.id > 1000){
return true;
}
return false;
})
});
}
}
И мой тестовый код Jasmine:
describe('TestService tests', function () {
var $q;
beforeEach(function () {
module('pilot.fw.user');
});
beforeEach(inject(function (_$q_) {
$q = _$q_;
}));
describe('UserController Tests', function () {
beforeEach(inject(function (_$httpBackend_, $rootScope, $controller) {
this.scope = $rootScope.$new();
this.$rootscope = $rootScope;
this.$httpBackend = _$httpBackend_;
this.scope = $rootScope.$new();
var TestServiceMock = {
getData: function () {
var deferred = $q.defer();
var result = [{
"id": 1720,
"user": 1132
},
{
"id": 720,
"user": 132
}, {
"id": 1721,
"user": 1132
}];
deferred.promise.data = result;
deferred.resolve(result);
return deferred.promise;
}
};
this.controller = $controller('TestCtrl', {
'$scope': this.scope,
'TestService': TestServiceMock
});
}));
it('test', function(){
this.scope.loadData();
expect(true).toBeTruthy();
})
});
});
Странная вещь, которую я не понимаю, (протестирован с консольными журналами):
- Мое обещание создано и возвращено
- Вызывается функция loadData и вызывается функция getData() из TestService
- Все внутри функции then не будет выполнено, хотя я верну обещание как разрешенное
Итак, как я могу проверить код внутри функции then?
Спасибо за помощь