Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs Angular Mock Inject使用Karma和Jasmine在没有消息的情况下抛出错误_Angularjs_Unit Testing_Ionic Framework_Jasmine_Angular Mock - Fatal编程技术网

Angularjs Angular Mock Inject使用Karma和Jasmine在没有消息的情况下抛出错误

Angularjs Angular Mock Inject使用Karma和Jasmine在没有消息的情况下抛出错误,angularjs,unit-testing,ionic-framework,jasmine,angular-mock,Angularjs,Unit Testing,Ionic Framework,Jasmine,Angular Mock,尝试对angular(Ionic)1应用程序进行单元测试时,使用angular.mock.inject(…)函数会引发以下错误。奇怪的是,没有特定的错误消息,这使得调试特别困难。无论我尝试什么,它似乎总是抛出相同的非描述错误,没有任何消息 PhantomJS 2.1.1 (Linux 0.0.0) LoginController should pass FAILED bower_components/angular/angular.js:4527:53 forEach@bower

尝试对angular(Ionic)1应用程序进行单元测试时,使用
angular.mock.inject(…)
函数会引发以下错误。奇怪的是,没有特定的错误消息,这使得调试特别困难。无论我尝试什么,它似乎总是抛出相同的非描述错误,没有任何消息

PhantomJS 2.1.1 (Linux 0.0.0) LoginController should pass FAILED
    bower_components/angular/angular.js:4527:53
    forEach@bower_components/angular/angular.js:321:24
    loadModules@bower_components/angular/angular.js:4487:12
    createInjector@bower_components/angular/angular.js:4409:30
    WorkFn@bower_components/angular-mocks/angular-mocks.js:3160:60
    loaded@http://localhost:9876/context.js:151:17
删除对
angular.mock.inject()
的调用将允许测试通过

下面是有问题的测试:

describe('LoginController', function() {

  var scope;
  var controller;

  beforeEach(angular.mock.module('mCommonJobs'));
  beforeEach(angular.mock.inject(function($rootScope, $controller) {
      scope = $rootScope.$new();
      controller = $controller('LoginController', {
          $scope: scope
      });
  }));

  it('should pass', function() {
    expect(true).toEqual(true);
  });

});
我的bower依赖项:

  "dependencies": {
    "angular-resource": "#1.5.0",
    "ionic": "driftyco/ionic-bower#1.3.2",
    "ngCordova": "^0.1.27-alpha",
    "ng-cordova-oauth": "^0.3.0",
    "ngstorage": "^0.3.11",
    "angular-mocks": "^1.5.2"
  },
  "resolutions": {
    "angular": "~1.5.x"
  }
以及Karma测试配置中设置的文件:

files: [
  //Angular source
  'bower_components/angular/angular.js',
  'bower_components/angular-animate/angular-animate.js',
  'bower_components/angular-mocks/angular-mocks.js',
  'bower_components/angular-resource/angular-resource.js',
  'bower_components/angular-sanitize/angular-sanitize.js',
  'bower_components/angular-ui-router/release/angular-ui-router.js',
  'bower_components/ionic/js/ionic.bundle.js',
  'bower_components/ng-cordova-oauth/dist/ng-cordova-oauth.js',
  'bower_components/ngCordova/dist/ng-cordova.js',
  'bower_components/ngCordova/dist/ng-cordova-mocks.js',
  'bower_components/ngstorage/ngStorage.js',
  //App code
  'app/**/*.module.js',
  'app/**/*.js',
  'app/*.js',
  //Test files
  'test/**/*.test.js'
],

通过在karma的
文件
配置中不包括所有
ionic.bundle.js
,而是特别包括其部分,解决了这个问题

我还明确地强制所有与角度相关的依赖项版本都是相同的版本(特别是由于在注释中)


最后,我的
bower.json
有:

  "dependencies": {
    "angular-resource": "1.5.2",
    "ionic": "driftyco/ionic-bower#1.3.2",
    "ngCordova": "^0.1.27-alpha",
    "ng-cordova-oauth": "^0.3.0",
    "ngstorage": "^0.3.11",
    "angular-mocks": "1.5.2"
  },
我的因果报应配置看起来像:

files: [
  //Angular source
  'bower_components/angular/angular.js',
  'bower_components/angular-animate/angular-animate.js',
  'bower_components/angular-mocks/angular-mocks.js',
  'bower_components/angular-resource/angular-resource.js',
  'bower_components/angular-sanitize/angular-sanitize.js',
  'bower_components/angular-ui-router/release/angular-ui-router.js',
  'bower_components/ionic/js/ionic.js',
  'bower_components/ionic/js/ionic-angular.js',
  'bower_components/ng-cordova-oauth/dist/ng-cordova-oauth.js',
  'bower_components/ngCordova/dist/ng-cordova.js',
  'bower_components/ngCordova/dist/ng-cordova-mocks.js',
  'bower_components/ngstorage/ngStorage.js',
  //App code
  'app/**/*.module.js',
  'app/**/*.js',
  'app/*.js',
  //Test files
  'test/**/*.test.js'
],

您的
angular mocks.js
版本应该与
angular.js
版本完全相同。您的bower
分辨率
配置正在强制Angular转换为版本
1.5.x
@Phil我将
Angular Mock的版本更改为
^1.5.2
。同样的错误。我会更新问题。是的,我
rm-rf bower_组件
bower安装
。仅供参考,您可以(也应该)制作
角度模拟
a
设计依赖性
entry@Phil找到解决方案,张贴在下面。