У меня есть некоторые проблемы с вводом моей фабрики в спецификацию тестирования. Я использую requireJS внедрить контроллеры и заводы и т.д.Невозможно ввести завод в контроллер в Жасмин (requireJS)
define(['controller', 'loginFactory', 'angular', 'angularMocks'],
function(ctrl, loginFactory, angular){
var scope,
OnBoardingCtrl;
describe('Controller: OnBoarding', function() {
beforeEach(angular.mock.inject(function ($rootScope, $controller, $location) {
angular.module('app');
scope = $rootScope.$new();
OnBoardingCtrl = $controller(ctrl, {
'$scope': scope,
'loginFactory': loginFactory,
});
}));
it('Should check endpoint', inject(function ($http, $httpBackend) {
var successCallback = jasmine.createSpy();
var url = 'login?un=test&pw=test';
var response = {"token":1}
$httpBackend.expectGET(url)
.respond(200, response);
$http.get(url).success(successCallback);
expect(successCallback).not.toHaveBeenCalled();
$httpBackend.flush();
expect(successCallback.token).toBe(1);
}));
});
}
);
Как всегда я получаю TypeError: «не определено» не является объектом (оценка «successCallback.token) Для справки мой LoginFactory выглядит следующим образом:
var LoginFactory = function ($q, $http) {
return {
getData: function (url) {
var deferred = $q.defer();
$http.get('http://local/'+url)
.then(function() {
deferred.resolve(true);
}, function() {
deferred.resolve(false);
});
return deferred.promise;
}
};
};
LoginFactory.$inject = ['$q', '$http'];
factories.factory('LoginFactory', LoginFactory);
return LoginFactory;
Заранее благодарен!
Как вы думаете, 'LoginService. $ Inject' должно быть' LoginFactory. $ Inject'? Мы указываем зависимости для объекта LoginFactory, а не LoginService – Arkantos
Да, должно быть, я обновил – Ben