1
angular.module('MyApp')
.controller('loginCtrl', function($scope, $rootScope, $location, $window, $auth) {
$scope.login = function() {
$auth.login($scope.user)
.then(function(response) {
if(response.data.users.status === 'success'){
$rootScope.currentUser = response.data.username;
$window.localStorage.user = JSON.stringify(response.data.users);
$location.path('/');
}
}).catch(function(response){
if(response.data.users.status === 'error'){
$scope.error = response.data.users.error;
}
})
};
});
Я получаю ошибку:
users is undefined error
при тестировании выше кода с Кармы и Жасмин.
Спецификация ниже:
describe('LogController', function() {
var $scope, controller, $location, $window;
beforeEach(module('MyApp'));
beforeEach(inject(function($rootScope, $controller, _$location_ , _$window_ , _$httpBackend_) {
$scope = $rootScope.$new();
$window = _$window_
$httpBackend = _$httpBackend_;
$location = _$location_;
controller = $controller('loginCtrl', {
$scope: $scope,
$location: $location,
$window: $window
});
}))
it('should log in a user and redirect to homepage', function() {
$httpBackend.when('POST','/user/auth').respond(200);
//whitelist all view
$httpBackend.whenGET(/partials.*/).respond(200, '');
$scope.username = 'test';
$scope.password = '123456';
$scope.login();
$httpBackend.flush();
$scope.$apply();
expect($location.path()).toBe('/x');
});
})
Что такое users
не определено? И как я высмеиваю ответ от $window.localStorage
, так что этого не будет?
Погрешность, код, и ожидаемый результат должен быть в вашем вопросе. Вы не можете использовать Pastebin для публикации информации, которую нам нужно видеть. –
@GeorgeStocker спасибо, сэр, но у вас есть ответ на это? Я застрял часами. –
Ваша проблема в том, что вам нужно включить объект 'data' для вашего издеваемого ответа, в настоящее время вы возвращаете пустую строку:' $ httpBackend.whenGET (/ partials. * /). Reply (200, ''); ' , Эта пустая строка должна быть объектом данных: '{data: {" users ": {" status ":" Worked "}}}' –