2016-09-15 3 views
0

나는 다음과 같은 코드가 있습니다

angular.module('ps.workspaces').config(['$provide', function($provide) { 
    $provide.factory('workspacesNonCompliance', ['$filter', function($filter) { 
    return { 
     NonComplianceReasons: [ 
     {name: $filter('translate')('NONCOMPLIANT.ALL'), noncompliant_properties: '' }, 
     {name: $filter('translate')('NONCOMPLIANT.JAIL_BREAK_DETECTION'), noncompliant_properties: 'jail_break_detection' }, 
     {name: $filter('translate')('NONCOMPLIANT.COMPLIANCE_ROOTED_DETECTION'), noncompliant_properties: 'compliance_rooted_detection' }, 
     {name: $filter('translate')('NONCOMPLIANT.COMPLIANCE_USB_DEBUGGING'), noncompliant_properties: 'compliance_usb_debugging'}, 
     {name: $filter('translate')('NONCOMPLIANT.POLICY_EXPIRED'), noncompliant_properties: 'policy_expired'} 
     ] 
    }; 
    }]); 
}]); 

내 모듈은 다음과 같습니다

angular.module('ps.workspaces', [ 
    'ps.workspaces.workspacesDirective', 
    'ps.workspaces.workspacesFactories' 
]); 

내 시험은 다음과 같습니다

describe('Tests for workspacesNonCompliance /', function() { 
    var workspacesNonCompliance, 
     $provider, 
     $filter; 

    // beforeEach(module('ps.workspaces')); 
    // beforeEach(module('ps.workspaces.workspacesDirective')); 
    // beforeEach(module('ps.workspaces.workspacesFactories')); 

    beforeEach(function(){ 
    angular.module('ps.workspaces', [ 
     'ps.workspaces.workspacesDirective', 
     'ps.workspaces.workspacesFactories' 
    ]); 
}); 

    describe('workspacesNonCompliance is array of noncompliance reasons /', function() { 
    beforeEach(function() { 
     inject(function ($injector) { 
     workspacesNonCompliance = $injector.get('workspacesNonCompliance'); 
     $filter = $injector.get('$filter'); 

     }); 
    }); 

    it('workspacesNonCompliance has array of noncompliance reasons', function() { 
     console.log('******* workspacesNonCompliance ', workspacesNonCompliance); 
     expect(workspacesNonCompliance.NonComplianceReasons).toContain({name: $filter('translate')('NONCOMPLIANT.ALL'), noncompliant_properties: '' }); 
    }); 

    }); 
}); 

테스트를 실행하고 오류 메시지가 표시됩니다.

오류 : [$ 주입기 : unpr] 알 수없는 제공 : workspacesNonComplianceProvider < - workspacesNonCompliance http://errors.angularjs.org/1.3.18/ $ 인젝터/unpr P0 = workspacesNonComplianceProvider % 20 % 3C- % 20workspacesNonCompliance 에서/사용자/joannepham/자식/PWS/콘솔 UI/bower_components/angular/angular.js : 63 : 12 at /Users/joannepham/git/pws/console-ui/bower_components/angular /angular.js:4031:19

수정해야 할 항목을 파악할 수 없습니다. 이 경우. 도와주세요

답변

0

어떤 ps.workspaces.workspacesDirectiveps.workspaces.workspacesFactories을 가지고 있는지 잘 모릅니다. 하지만 여기에서 가장 중요한 문제는 workspacesNonCompliance이 제대로 주입되지 않았기 때문입니다. 그것이 undefined으로 나오고 오류가 발생하는 이유입니다. 이 도움이

describe('Tests for workspacesNonCompliance /', function() { 
 
    var workspacesNonCompliance, $provider, $filter; 
 

 
    beforeEach(function() { 
 
    module('ps.workspaces'); 
 
    }); 
 

 
    beforeEach(inject(function(_workspacesNonCompliance_) { 
 
    workspacesNonCompliance = _workspacesNonCompliance_; 
 
    })); 
 

 
    describe('workspacesNonCompliance', function() { 
 
    it('should have workspacesNonCompliance as defined', function() { 
 
     expect(workspacesNonCompliance).toBeDefined(); 
 
    }); 
 
    }); 
 
});

희망 :

테스트 파일은 같은 뭔가해야한다.

관련 문제