Я новичок в модульном тестировании, поэтому, пожалуйста, со мной. У меня возникли проблемы с вызовом до фактической реализации, и я получаю эту ошибку:Проблема с жасминовыми шпионами звоните через
TypeError: undefined is not an object (evaluating 'GitUser.GetGitUser('test').then') ...
Вот мои коды:
app.controller('HomeController', ['$scope', 'GitUser', function ($scope, GitUser) {
$scope.name = "user";
GitUser.GetGitUser('test').then(function (data) {
console.log(data);
if (data) {
$scope.name = data;
}
});
}]);
app.factory('GitUser', function ($http) {
return {
GetGitUser: function (username) {
return $http.get('https://api.github.com/users/' + username)
.then(function success(response) {
return response.data.login;
});
}
};
});
Вот мой блок тест:
describe('HomeController Unit Test', function() {
var $controllerConstructor, scope;
beforeEach(module("AngularApp"));
beforeEach(inject(function ($controller, $rootScope) {
$controllerConstructor = $controller;
scope = $rootScope.$new();
}));
it('should test if scope.name is test', function() {
// Act
GitUser = {
GetGitUser: function() { }
};
spyOn(GitUser, "GetGitUser").and.callThrough();
GitUser.GetGitUser();
$controllerConstructor('HomeController', {
'$scope': scope,
'GitUser': GitUser
})
// Assert
expect(GitUser.GetGitUser).toHaveBeenCalled();
expect(scope.name).toBe('test');
});
});
Любое предложение или помощь будет здорово! Заранее спасибо!
Удивительно, это имеет большой смысл! Спасибо, обязательно попробуем это, когда у меня будет доступ к проекту. Я использовал callThrough, чтобы получить фактическое имя пользователя для входа, чтобы узнать, существует ли он. Могу ли я сделать это тестирование контроллера или мне нужно будет создать единичный тест для службы[email protected] Martinelle –
Вы должны создать отдельный тест для своей службы, чтобы убедиться в этом. Для этого теста вы захотите использовать $ httpBackend, чтобы издеваться над http-вызовом (если вы google $ httpBackend, вы увидите несколько примеров. Вот один из них: http://www.bradoncode.com/blog/2015/06/26/unit -тестирование-HTTP-ngmock-основа / –