1
비동기 적으로 실행되는 각도 컨트롤러를 단위 테스트하려면 Jasmine을 사용하고 있습니다. 컨트롤러에 종속성을 성공적으로 주입 할 수 있었지만 데이터가로드되기 전에 내 테스트가 실행되므로 비동기 처리 방법을 변경해야했습니다. 현재 모의 의존성에 대한 간첩을 사용하고 andCallThrough()
을 사용하려고하지만 오류 TypeError: undefined is not a function
이 발생합니다.재스민 단위 테스트 비동기 컨트롤러 방법
여기 내 컨트롤러의 ...
myApp.controller('myController', function($scope, users) {
$scope.user = {};
users.current.get().then(function(user) {
$scope.user = user;
});
});
내 test.js ...
describe('myController', function() {
var scope, createController, mockUsers, deferred;
beforeEach(module("myApp"));
beforeEach(inject(function ($rootScope, $controller, $q) {
mockUsers = {
current: {
get: function() {
deferred = $q.defer();
return deferred.promise;
}
}
};
spyOn(mockUsers.current, 'get').andCallThrough();
scope = $rootScope.$new();
createController = function() {
return $controller('myController', {
$scope: scope,
users: mockUsers
});
};
}));
it('should work', function() {
var ctrl = createController();
deferred.resolve('me');
scope.$digest();
expect(mockUsers.current.get).toHaveBeenCalled();
expect(scope.user).toBe('me');
});
});
알려 주시기 바랍니다 테스트 이러한 유형의 더 나은 방법이 있다면, 감사합니다 .() 최신 버전에 andCallThroungh을 객체 및 내부 :
감사합니다. 2.0을 사용 중이며 이전 버전의 예를보고있었습니다. –