AngularJs,Karma,Jasmine,为什么在这种情况下无法为测试用例提供服务?

柏林布朗

我正在使用咕unt声并运行业力任务。我将我的单元测试用例配置为业力/茉莉花。似乎所有内容都应该就位,但我的一项服务无法加载。

下面的constanstsservice导致错误

(function() {
  'use strict';
  /**
   * Run a suite of tests.
   */
  describe('Registration Service API tests:', function() { 
    beforeEach(module('registration'));

    var scope = null;
    var constantService = null;

    console.log('Setting up test : ');
    /**
     * Set up variables before each call.
     * @returns
     */
    beforeEach(inject(function($rootScope) {
      scope = $rootScope.$new();              
      console.log('Before test[1]!! : ');
    }));

    beforeEach(inject(function($injector) {
      var serv1 = $injector.get('ConstantsService');
      console.log('Before test[2]!! : ');
    }));


    /**
     * Tear down after each test.
     * @returns
     */
    afterEach(function() {
      console.log('After test!! : ');
    });  

    /**
     * Run the behavior driven test.
     */
    it('Test Constant API properties:', function() {  
      console.log('Running test!! : '+ angular.toJson(scope));      
    });      
  });
})();

错误:

[32mINFO [PhantomJS 1.9.8 (Windows 7)]: [39mConnected on socket M74ZRKv1ww3Od5Y0gbhR with id 86992083
[36mDEBUG [launcher]: [39mPhantomJS (id 86992083) captured in 2.23 secs
[36mDEBUG [web-server]: [39mserving: C:\someuser\projects\workspace\register\WebContent\node_modules\karma\static/context.html
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/node_modules/karma-jasmine/lib/jasmine.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/node_modules/karma-jasmine/lib/boot.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/node_modules/karma-jasmine/lib/adapter.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/bower_components/jquery/dist/jquery.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/bower_components/angular/angular.min.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/bower_components/angular-mocks/angular-mocks.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/bower_components/angular-ui-router/release/angular-ui-router.min.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/bower_components/angular-translate/angular-translate.min.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/bower_components/angular-animate/angular-animate.min.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/bower_components/bootstrap/dist/js/bootstrap.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/bower_components/moment/min/moment.min.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/js/base64.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/modules/registration/scripts/registration.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/scripts/services/applicationConstants.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/modules/registration/controllers/registrationCtrl.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/modules/password/scripts/password.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/modules/password/controllers/passwordCtrl.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/modules/registration/submodules/verify/scripts/controllers/verifyInformationCtrl.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/modules/registration/submodules/accountSetup/scripts/controllers/accountPasswordSetupCtrl.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/scripts/3c74702c.modules.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/modules/registration/scripts/progressbar.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/WebContent/app/app.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/test/spec/registration/tests/applicationConstantTest.js
[36mDEBUG [web-server]: [39mserving (cached): C:/someuser/projects/workspace/register/test/testHelper.js
PhantomJS 1.9.8 (Windows 7) LOG: [36m'Setting up test : '[39m


[1A[2KPhantomJS 1.9.8 (Windows 7): Executed 0 of 1[32m SUCCESS[39m (0 secs / 0 secs)
[1A[2KLOG: [36m'Before test[1]!! : '[39m
PhantomJS 1.9.8 (Windows 7): Executed 0 of 1[32m SUCCESS[39m (0 secs / 0 secs)
[1A[2KLOG: [36m'Running test!! : "$SCOPE"'[39m
PhantomJS 1.9.8 (Windows 7): Executed 0 of 1[32m SUCCESS[39m (0 secs / 0 secs)
[1A[2KLOG: [36m'After test!! : '[39m
PhantomJS 1.9.8 (Windows 7): Executed 0 of 1[32m SUCCESS[39m (0 secs / 0 secs)
[1A[2K[31mPhantomJS 1.9.8 (Windows 7) Registration Service API tests: Test Constant API properties: FAILED[39m
    Error: [$injector:unpr] http://errors.angularjs.org/1.4.0/$injector/unpr?p0=ConstantsServiceProvider%20%3C-%20ConstantsService
        at C:/someuser/projects/workspace/register/WebContent/app/bower_components/angular/angular.min.js:40
        at d (C:/someuser/projects/workspace/register/WebContent/app/bower_components/angular/angular.min.js:38)
        at C:/someuser/projects/workspace/register/WebContent/app/bower_components/angular/angular.min.js:40
        at d (C:/someuser/projects/workspace/register/WebContent/app/bower_components/angular/angular.min.js:38)
        at C:/someuser/projects/workspace/register/test/spec/registration/tests/applicationConstantTest.js?52375e25073be74d7060ae6c13510c057f544726:26
        at e (C:/someuser/projects/workspace/register/WebContent/app/bower_components/angular/angular.min.js:38)
        at workFn (C:/someuser/projects/workspace/register/WebContent/app/bower_components/angular-mocks/angular-mocks.js:2420)
        at C:/someuser/projects/workspace/register/WebContent/node_modules/karma-jasmine/lib/boot.js:117
        at C:/someuser/projects/workspace/register/WebContent/node_modules/karma-jasmine/lib/adapter.js:171
        at http://localhost:10086/karma.js:189
        at http://localhost:10086/context.html:81
    undefined
PhantomJS 1.9.8 (Windows 7): Executed 1 of 1[31m (1 FAILED)[39m (0 secs / 0.014 secs)
[1A[2KPhantomJS 1.9.8 (Windows 7): Executed 1 of 1[31m (1 FAILED)[39m[31m ERROR[39m (0.002 secs / 0.014 secs)
[36mDEBUG [karma]: [39mRun complete, exitting.
[36mDEBUG [launcher]: [39mDisconnecting all browsers
[36mDEBUG [launcher]: [39mProcess PhantomJS exited with code 0
[36mDEBUG [temp-dir]: [39mCleaning temp dir C:\Users\User\AppData\Local\Temp\karma-86992083
[33mWarning: Task "karma:registration" failed. Use --force to continue.[39m

[31mAborted due to warnings.[39m

与gruntfile.js相关:

 karma: {               
   registration: {
     configFile: 'karma.conf.js',
     singleRun: true
   }
 },

业力配置文件:

module.exports = function(config){config.set({//启用/禁用监视文件并在任何文件更改时执行测试autoWatch:false,

// base path, that will be used to resolve files and exclude
basePath: '',

// testing framework to use (jasmine/mocha/qunit/...)
frameworks: ['jasmine'],

// list of files / patterns to load in the browser
files: [
        'app/bower_components/jquery/dist/jquery.js',
        'app/bower_components/angular/angular.min.js',
        'app/bower_components/angular-mocks/angular-mocks.js',
        'app/bower_components/angular-ui-router/release/angular-ui-router.min.js',
        'app/bower_components/angular-translate/angular-translate.min.js',
        'app/bower_components/angular-animate/angular-animate.min.js',            
        'app/bower_components/bootstrap/dist/js/bootstrap.js',
        'app/bower_components/moment/min/moment.min.js',
        'app/js/base64.js',

        'app/modules/registration/scripts/registration.js',
        'app/scripts/services/applicationConstants.js',
        'app/modules/registration/controllers/registrationCtrl.js',          

        'app/modules/registration/submodules/verify/scripts/controllers/verifyInformationCtrl.js',
        'app/modules/registration/submodules/accountSetup/scripts/controllers/accountPasswordSetupCtrl.js',

        'app/scripts/*.js',
        'app/scripts/**/*.js',
        'app/modules/**/*.js',
        'app/app.js',                  
        '../test/**/*.js',
        'app/scripts/services/applicationConstants.js',
],

这是服务,我要加载。我无法引用已定义的服务。

(function() {
  'use strict';
    angular.module('registration').factory('ConstantsService', ['$q', function ($q) {     
      var appInformation = {                    
          appname : 'app1'        
      };
      /**
       * Return encoded representation of application information.
       */
      var encodeAppInformation = function() {
        var dataResult = "000000";
        var milliseconds = (new Date()).getTime();
        if (!window.btoa) {
        window.btoa = base64.encode(appInformation.appname);
      }     
        dataResult = window.btoa(appInformation.appname+';'+milliseconds) ;
        return dataResult; 
      };
        return {
        APPLICATION_INFORMATION: appInformation,
        encodeAppInformation : encodeAppInformation
      };
    }]);
})();
彼得·艾略特(Peter Elliott)

而不是$injector在每个块之前注入,而是注入服务本身,如下所示:

beforeEach(inject(function(ConstantsService) {
      var serv1 = ConstantsService;
      console.log('Before test[2]!! : ');
    }));

问题可能还在于您过多地包含了脚本,并且模块定义被覆盖,特别是在本节中

'app/scripts/*.js',
    'app/scripts/**/*.js',
    'app/modules/**/*.js',
    'app/app.js',                  
    '../test/**/*.js',
    'app/scripts/services/applicationConstants.js',

如果检查出angularjs生成的错误URL,则可以看到以下模式可以清除注册:

angular.module('myModule', [])
  .service('myCoolService', function () { /* ... */ });

angular.module('myModule', [])
  // myModule has already been created! This is not what you want!
  .directive('myDirective', ['myCoolService', function (myCoolService) {
    // This directive definition throws unknown provider, because myCoolService
    // has been destroyed.
  }]);

您包含文件的方式可能会发生这种情况

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在这种情况下,当我尝试运行一个测试用例脚本时,为什么会打开多个浏览器实例?

为什么在这种情况下打印为假?

为什么在这种情况下无法合并接口?

在这种情况下,为什么ghci不提供预期的歧义类型变量错误?

为什么在这种情况下afIoc不注入服务?

为什么在没有 -DPASS 的情况下在测试用例下编译不是 sfinae 友好的

iOS为什么在这种情况下backBarButtonItem为零

为什么在这种情况下array的值为null?

事务和存储过程。为什么在这种情况下日志表为空?

为什么在这种情况下需要引用/借用?

为什么在这种情况下转发参考无效?

为什么在这种情况下Array的元素是可选的?

为什么std :: forward在这种情况下无用

为什么在这种情况下会有UnboundLocalError?

为什么在这种情况下x = 44?

为什么在这种情况下创建循环?

在这种情况下,为什么Python比C ++快?

为什么在这种情况下引用模板参数?

为什么在这种情况下使用BufferedReader?

为什么在这种情况下“ this”是全局/窗口对象?

为什么在这种情况下fzf失败

在这种情况下,为什么 GetExternalLoginInfoAsync() 返回 null?

为什么在这种情况下UniquelyReferencedNonObjC返回false?

为什么在这种情况下 cout 不会溢出?

为什么在这种情况下使用memset

为什么在这种情况下,andmap返回#t?

为什么在这种情况下使用str()?

为什么在这种情况下isinstance()返回False?

为什么在这种情况下需要ref?