使用Jasmine测试角度2时文件未正确加载

时间:2016-12-12 17:16:24

标签: angular jasmine

我正在尝试在我的角应用上运行Jasmine测试,并在使用开发人员工具进行调试时获得以下消息

错误:(SystemJS)XHR错误(404 Not Found)loading http://localhost:45870/node_modules/@angular/core/bundles/core.umd.js/testing

我认为加载的内容不正确,因为我可以看到这个node_modules/@angular/core/bundles/core.umd.js和core.umd.js是一个文件而不是文件夹。但是有一个foldler node_modules / @ angular / core / bundles / testing。

请参阅下面的Systemjs.config.js文件

/**
 * System configuration for Angular samples
 * Adjust as necessary for your application needs.
 */
(function (global) {
  System.config({
    paths: {
      // paths serve as alias
      'npm:': 'node_modules/'
    },
    // map tells the System loader where to look for things
    map: {
      // our app is within the app folder
      app: 'app',
      '@progress/kendo-angular-grid': 'npm:@progress/kendo-angular-grid',
        '@progress/kendo-angular-intl': 'npm:@progress/kendo-angular-intl',
        '@telerik/kendo-intl': 'npm:@telerik/kendo-intl',
      // angular bundles
      '@angular/core': 'npm:@angular/core/bundles/core.umd.js',
      '@angular/common': 'npm:@angular/common/bundles/common.umd.js',
      '@angular/compiler': 'npm:@angular/compiler/bundles/compiler.umd.js',
      '@angular/platform-browser': 'npm:@angular/platform-browser/bundles/platform-browser.umd.js',
      '@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js',
      '@angular/http': 'npm:@angular/http/bundles/http.umd.js',
      '@angular/router': 'npm:@angular/router/bundles/router.umd.js',
      '@angular/forms': 'npm:@angular/forms/bundles/forms.umd.js',
      '@angular/upgrade': 'npm:@angular/upgrade/bundles/upgrade.umd.js',
       'primeng': 'node_modules/primeng',
       'angular2-google-maps/core': 'npm:angular2-google-maps/core/core.umd.js',
      // other libraries
      'rxjs':                      'npm:rxjs',
      'angular-in-memory-web-api': 'npm:angular-in-memory-web-api',
    },
    // packages tells the System loader how to load when no filename and/or no extension
    packages: {
      app: {
        main: './main.js',
        defaultExtension: 'js'
      },
      'npm:@progress/kendo-angular-grid': {
          main: './dist/npm/js/main.js',
          defaultExtension: 'js'
      },
      'npm:@progress/kendo-angular-intl': {
          main: './dist/npm/js/main.js',
          defaultExtension: 'js'
      },
      'npm:@telerik/kendo-intl': {
          main: './dist/npm/js/main.js',
          defaultExtension: 'js'
      },
      'primeng': { defaultExtension: 'js' },
      rxjs: {
        defaultExtension: 'js'
      },
      'angular-in-memory-web-api': {
        main: './index.js',
        defaultExtension: 'js'
      }
    }
  });
})(this);

1 个答案:

答案 0 :(得分:0)

因此,您拥有运行应用程序所需的所有Angular文件,并在systemjs.config.js文件中进行设置。但是在测试中,您正在尝试导入Angular 测试模块中的内容。它们位于不同的包中,而不是(正确地)在应用程序systemjs.config.js中配置。

您需要做的还是映射那些测试模块。但是你应该在一个只为测试加载的单独文件中执行此操作。如果查看Angular quickstart项目,测试模块有一个karma-test-shim.js SystemJS配置映射。

即使在修复之后,你仍然可能遇到其他错误(如果没有看到茉莉花设置就无法判断。设置这个错误还有很多其他问题。你会看到this plunker完成设置

就个人而言,我建议设置Karma。你可以看一下this article,在那里我做了一个非常彻底的步骤,从Browser / Jasmine到Karma / Jasmine的转换。