Я пытаюсь проверить свое приложение с помощью Жасмина и получил следующую проблему:
Я посчитаю что-то в функции моего обещания. Вот в чем смысл тестирования моего кода.Жасмин проверить обещание. Затем функция
Вот код моего контроллера:
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;
})
});
}
}
И мой жасмин код теста:
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();
})
});
});
Странная вещь, которую я не понимаю (протестировано с бревнами консольных):
- Мое обещание создано и возвращено
- My loadD Функция ата вызывается и будет вызывать функцию GetData() из TestService
- Все внутри то функция не будет выполнена, хотя я возвращаю обещание, как разрешенное
Так как я могу проверить код внутри затем функция?
Спасибо за помощь
это ('тест', функция (сделано) { TestServiceMock.getData(), а затем (функция (результат) { console.log (результат);. }); ожидать (истина) .toBeTruthy(); сделано();} ) Я попробовал этот путь, но мой журнал консоли не правда даже называется ... же проблема как и раньше:/ - Извините за CodeStyle - Баки для вашей помощи –
Вы звоните сделать ВНЕ «того»! Удостоверьтесь, что «сделано» ВНУТРИ ваших методов тогда: –
В противном случае вы выполняете до того, как обещание даже разрешилось, а тем более узнать, что это за результат. Обратите внимание, как в моем примере я передаю результат обещания в метод ожидания? Это работает только тогда, когда оно разрешено, а внутри «then» –