Çok fazla okuduktan sonra, bir AngularJS kontrol cihazından web servisini çağırmanın önerilen yolunun bir fabrika kullanmak ve bundan bir söz vermek olduğunu görüyoruz.
Burada örnek API'yi çağıran basit bir fabrikam var.
myApp.factory('MyFactory', ['$http',function($http) {
var people = {
requestPeople: function(x) {
var url = 'js/test.json';
return $http.get(url);
}
};
return people;
}]);
Ve bu kontrolörün
myApp.controller('MyCtrl1', ['$scope', 'MyFactory', function ($scope, MyFactory) {
MyFactory.requestPeople(22).then(function(result) {
$scope.peopleList = result;
});
}]);
iyi çalışıyor, ben then
çağrıldığında geçirilen result
alay edebilmek istiyorum bunu diyoruz nasıl. Mümkün mü?
Şimdiye kadar yaptığım girişim hiçbir şey üretmedi.
//Fake service
var mockService = {
requestPeople: function() {
return {
then: function() {
return {"one":"three"};
}
}
}
};
//Some setup
beforeEach(module('myApp.controllers'));
var ctrl, scope;
beforeEach(inject(function ($rootScope, $controller) {
scope = $rootScope.$new();
ctrl = $controller('MyCtrl1', { $scope: scope, MyFactory: mockService });
}));
//Test
it('Event Types Empty should default to false', inject(function() {
expect(scope.peopleList.one).toBe('three');
}));
karma koşucu bu çalıştırırken alıyorum hata,
TypeError geçerli:: ('scope.peopleList.one' değerlendirirken) 'tanımsız' bir nesne değil
Bu benim girişimidirBu sınama, sahte verilerimle nasıl çalışır?
bu konuda okumuştum ama benim denetleyicisi bir $ http almaz. Ne demek istediğini anlatabilir misin? – Mendhak