我的登錄控制器是:噶測試沒有做什麼預期
angular.module('mean').controller('LoginController', ['$scope', '$location', '$rootScope', 'UserService', function ($scope, $location, $rootScope, UserService) {
$scope.init = function() {
$scope.credentials = {};
$scope.status_object = {
text: '',
class: '',
show: false
};
}
$scope.authenticate = function() {
$scope.status_object = {
text: 'Authenticating...',
class: 'info',
show: true
};
UserService.authenticate($scope.credentials).then(function(response) {
if(response.data.status === 'error') {
$scope.status_object = {
text: response.data.error,
class: 'danger',
show: true
};
} else if(response.data.status === 'ok') {
$rootScope.globals.logged_in = true;
$location.path('/' + response.data.user.access);
}
});
};
}]);
我的測試是:
describe('LoginController', function() {
beforeEach(module('mean'));
var scope, rootScope, LoginController, $httpBackend, $location;
beforeEach(inject(function($controller, $rootScope, _$httpBackend_, _$location_) {
scope = $rootScope.$new();
rootScope = $rootScope.$new();
LoginController = $controller('LoginController', {
$scope: scope,
$rootScope: rootScope
});
$httpBackend = _$httpBackend_;
$location = _$location_;
}));
it('should show danger when wrong credentials are used', function() {
scope.credentials = {
email: '[email protected]',
password: 'password'
}
$httpBackend.expectPOST('/api/v1/user/auth').respond({
status: 'error',
error: 'Invalid User'
});
console.log(scope.status_object);
scope.authenticate();
$httpBackend.flush();
expect(scope.status_object).toEqualData({text: 'Invalid User', class: 'danger', show: true});
});
});
在我看來,我有一個ng-init="init()"
。一切順利的作品在前端,但在運行我的測試時,我得到:
PhantomJS 1.9.7 (Mac OS X) LoginController should show danger when wrong credentials are used FAILED
TypeError: 'undefined' is not a function (evaluating 'expect(scope.status_object).toEqualData({text: 'Invalid User', class: 'danger', show: true})')
at /myapp/test/karma/unit/controllers/login.spec.js:43
PhantomJS 1.9.7 (Mac OS X): Executed 4 of 4 (1 FAILED) (0.135 secs/0.043 secs)
不知道什麼我的測試是做錯了。有任何想法嗎?