I have the following controller
app.controller('NavController', ['$rootScope', '$scope', 'api', function($rootScope, $scope, $location, auth, api) {
$scope.load = function() {
return api.get('/location').success(function(data) {
$rootScope.locations = data;
}).error(function(data) {
console.log('load error');
});
};
}]);
And this is the unit test I have written for it
describe('Navigation Controller Test', function() {
beforeEach(module('app'));
var controller, scope, rootScope, httpBackend;
beforeEach(inject(function(_$controller_, _$rootScope_, $httpBackend) {
var $controller = _$controller_;
rootScope = _$rootScope_;
scope = rootScope.$new();
httpBackend = $httpBackend;
controller = $controller('NavController', {
$rootScope: rootScope,
$scope: scope,
});
apiRequestHandler = httpBackend.when('GET', '/api/v2/location')
.respond({userId: 'userX'});
}));
afterEach(function() {
httpBackend.verifyNoOutstandingExpectation();
httpBackend.verifyNoOutstandingRequest();
});
describe('load()', function() {
it('should have locations when successful', function() {
httpBackend.expectGET('/api/v2/location');
scope.load();
expect(rootScope.locations).toEqual("{userId: 'userX'}");
httpBackend.flush();
});
});
});
The current issue I'm having is that rootScope.locations
is undefined even after calling the scope.load()
function. I'm not too sure why this is but the closest post I seem to have found is this one which I think might be related to my problem but I'm not quite certain.
I did a console.log($rootScope.locations)
in the controller when the get request is successful and it had the correct output however I'm stumped on how to get it to appear the same for this test.
Aucun commentaire:
Enregistrer un commentaire