Aşağıdaki test başarısız oluyor ve nedenini anlayamıyorum? Yasemin ile ertelenmiş vaatleri nasıl test edeceğimi anlamaya çalışıyorum.Jasmine ile Açısal Sözün Test Edilmesi
Hata
Expected undefined to be 'Resolved Data'.
Testi
describe('Queued Repository', function() {
var ctrl,
rootScope,
scope,
service;
beforeEach(function() {
module('testApp');
inject(function ($rootScope, $controller, TestSrvc) {
rootScope = $rootScope;
scope = $rootScope.$new();
service = TestSrvc;
});
});
afterEach(inject(function ($rootScope) {
$rootScope.$apply();
}));
it('test something', function() {
expect(service.calculate(1, 5)).toBe(6);
});
it('resolves promises', function() {
var result;
service.getPromise().then(function (data) {
result = data;
});
rootScope.$apply();
expect(result).toBe('Resolved Data');
});
});
Servis
var app = angular.module('testApp', []);
app.service('TestSrvc', ['$q', '$timeout', '$http', function ($q, $timeout, $http) {
return {
getPromise: function() {
var d = $q.defer();
$timeout(function() {
d.resolve('Defered Result');
}, 5000);
return d.promise;
},
getSomething: function() {
return "Test";
},
calculate: function (x, y) {
return x + y;
}
}
}]);
Beklemeyin (sonuç) .toEqual ('Defered Result'); '? –
@JonathanPalumbo - Evet, ama hala çalışmıyor. – Sam
Evet Ne demek istediğini anlıyorum, sonuç undefined'. Eğer bir söz verilmişse, $ http 'i onaylama işleminizi yapmadan önce' $ httpBackend.flush() 'i çağırmanızı öneririm. Ancak, $ q' hizmetini kullanmak başka bir hikaye. –