source

정의되지 않은 jasmine test failed는 함수가 아닙니다($discounting).$$checkUrlChange()

manycodes 2023. 3. 17. 21:44
반응형

정의되지 않은 jasmine test failed는 함수가 아닙니다($discounting).$$checkUrlChange()

다음과 같은 컨트롤러가 있습니다.

.controller('ProjectUserAddCtrl', ['$scope', 'ProjectUser', '$q', 'i18nNotifications',     
function($scope, ProjectUser, $q, i18nNotifications) {
    var buildUnassignedUsers = function(users, project) {
        var unassignedUsers = [];
        angular.forEach(users, function(user) {
            var match;
            angular.forEach(project.projectUsers, function(projectUser) {
                if(match) {return;}
                if(projectUser.user.id === user.id) {
                    match = true;
                }
            });

            if(!match) {
                unassignedUsers.push(user);
            }
        });

        $scope.unassignedUsers = unassignedUsers;
    };     

    $q.all([
            $scope.users,
            $scope.project
    ]).then(function(result) {
            buildUnassignedUsers($scope.users, $scope.project);
            $scope.$watch('project', function(newVal) { 
                buildUnassignedUsers($scope.users, $scope.project); }, true
            );
    });
}]);

그리고 재스민에 대한 다음 테스트:

describe('ProjectUserAddCtrl', function() {
    var ctrl;
    beforeEach(function(){
        $scope.users = [];
        $scope.project = {
            projectUsers: []
        };
        ctrl = $controller('ProjectUserAddCtrl', {$scope:$scope, ProjectUser:ProjectUser, $q:$q, i18nNotifications:i18nNotifications});
    });

    it('should create a new instance', function() {
        expect(ctrl).toBeDefined();
    });

    // this test fails!
    it('should create a list of unassigned users', function() {
        $scope.$apply(); // need to call apply to resolve promises
        expect($scope.unassignedUsers).toBeDefined();
    });

});

"할당되지 않은 사용자 목록을 생성해야 합니다" 테스트가 실패하고 다음 오류가 발생합니다.

TypeError: 'undefined'는 함수가 아닙니다($browser 평가).$$checkUrlChange()

왜 그랬는지 정말 모르겠어.아무쪼록 잘 부탁드립니다.

angular.js와 angular-mocks.js 사이에 불일치가 있을 때 이 문제가 발생하는 것 같습니다.두 파일이 같은 버전인지 확인하십시오.

질문에 대한 저의 원래 코멘트는 무시해 주세요.

저는 레일 프로젝트에서도 똑같은 문제를 겪었습니다.

angular.js를 1.2.24로 업그레이드한 후 티스푼 테스트 슈트가 실패하기 시작했습니다.angular.js 소스/커밋스토리 등을 조사했는데 앵글모크 업데이트를 잊어버린 것을 알게 되었습니다(구 버전 1.2.20을 사용하고 있었기 때문에 실행해야 합니다).bundle update rails-assets-angular-mocks이 변경을 강제합니다).새로운 Mock을 적용한 후(이들은 이미$$checkUrlChangeFunction mock) 모든 것이 작동하기 시작했습니다.

오래된 모크 오브젝트도 사용하려고 하는 것 같네요.

언급URL : https://stackoverflow.com/questions/25785149/jasmine-test-fails-with-undefined-is-not-a-functionevaluating-browser-checku

반응형