Angular2测试,SystemJS无法加载模块



我的环境非常类似于具有一个差异的官方angular2 Quickstart:而不是public/src/app,我有public/app

尝试用ViewChild测试Component时:

@ViewChild('profileModal')
profileModal: ModalComponent;

在被测试的组件中加载为:

import { ModalComponent } from 'ng2-bs3-modal/ng2-bs3-modal';

npm test显示此错误:

05 05 2017 17:45:48.218:WARN [web-server]: 404: /base/ng2-bs3-modal/ng2-bs3-modal
[1] Chrome 58.0.3029 (Mac OS X 10.12.2) ERROR
[1]   {
[1]     "originalErr": {
[1]       "__zone_symbol__currentTask": {
[1]         "type": "microTask",
[1]         "state": "notScheduled",
[1]         "source": "Promise.then",
[1]         "zone": "<root>",
[1]         "cancelFn": null,
[1]         "runCount": 0
[1]       }
[1]     },
[1]     "__zone_symbol__currentTask": {
[1]       "type": "microTask",
[1]       "state": "notScheduled",
[1]       "source": "Promise.then",
[1]       "zone": "<root>",
[1]       "cancelFn": null,
[1]       "runCount": 0
[1]     }
[1]   }

KRARMA.CONFIG.JS: [为简短而省略]

module.exports = function(config) {
  var appBase    = 'app/';       // transpiled app JS and map files
  var appSrcBase = appBase;      // app source TS files
  config.set({
    basePath: '.',
    proxies: {
      '/base/node_modules/': '/base/node_modules/'
    },
  })
}

我该如何告诉karma/base/npm_modules/ng2-bs3-modal/ng2-bs3-modal而不是/base/ng2-bs3-modal/ng2-bs3-modal加载。

使用SystemJs代替Webpack

您应该将其放在karma.config文件的"文件"部分中:

files: [ 'node_modules/ng2-bs3-modal/ng2-bs3-modal.js' ]

不确定您是否已经在配置文件中有该部分,但以防万一,请记住,您可以通过Systemjs配置来加载应用程序及其依赖项:

files: [
    // System.js for module loading
    'node_modules/systemjs/dist/system.src.js',
    // Load any lib not included in systemjs.config here, like zone.js 
    'node_modules/zone.js/dist/zone.js',
    // RxJs
    { pattern: 'node_modules/rxjs/**/*.js', included: false, watched: false },
    { pattern: 'node_modules/rxjs/**/*.js.map', included: false, watched: false},
    // Paths loaded via module imports:
    // Angular itself
    { pattern: 'node_modules/@angular/**/*.js', included: false, watched: false },
    { pattern: 'node_modules/@angular/**/*.js.map', included: false, watched: false },
    { pattern: 'systemjs.config.js', included: false, watched: false },
    { pattern: 'systemjs.config.extras.js', included: false, watched: false },
    'karma-test-shim.js',
]

您可以参考此帖子以获取有关它的更多详细信息。

最新更新