Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.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
Javascript 使用Systemjs加载的类时出现TypeError_Javascript_Systemjs_Karma Mocha - Fatal编程技术网

Javascript 使用Systemjs加载的类时出现TypeError

Javascript 使用Systemjs加载的类时出现TypeError,javascript,systemjs,karma-mocha,Javascript,Systemjs,Karma Mocha,我再一次被Javascript弄糊涂了。我使用Systemjs作为模块加载器,并有一个类,如下所示: export default class Tool{ constructor(state, displayText) { this._state = state; this._displayText = displayText; } get displayText() { return this._displayText; } get sta

我再一次被Javascript弄糊涂了。我使用Systemjs作为模块加载器,并有一个类,如下所示:

  export default class Tool{
  constructor(state, displayText) {

    this._state = state;
    this._displayText = displayText;
  }

  get displayText() {
    return this._displayText;
  }

  get state() {
    return this._state;
  }

}
'use strict';
import Tool from '../core/model/framework/Tool';
import chai from '../../../jspm_packages/npm/chai@3.5.0';

chai.should();

describe('MenuProvider', () => {
  describe('registration', () => {
    it('should register a new Workbench Module', ()=> {
      let tools = [];

      debugger;

      tools.push(new Tool('Pink Fuzzy Bunnies', 'bunnyState'));
      tools.push(new Tool('Look no hands', 'nohandsstate'));


      let toolboxes = [];
      toolboxes.push(new Toolbox('My Shiny New Toolbox', tools));

      let newModule = new WorkbenchModule('My Module', toolboxes);

      let providerUnderTest = new MenuProvider();

      providerUnderTest.loadModule(newModule);

      provider.modules.count.should.equal(1);
      provider.getModule('My Module').should.not.be.null;

    });
  });
});
我在单元测试(Karma/Mocha/Chai)中使用这个类,如下所示:

  export default class Tool{
  constructor(state, displayText) {

    this._state = state;
    this._displayText = displayText;
  }

  get displayText() {
    return this._displayText;
  }

  get state() {
    return this._state;
  }

}
'use strict';
import Tool from '../core/model/framework/Tool';
import chai from '../../../jspm_packages/npm/chai@3.5.0';

chai.should();

describe('MenuProvider', () => {
  describe('registration', () => {
    it('should register a new Workbench Module', ()=> {
      let tools = [];

      debugger;

      tools.push(new Tool('Pink Fuzzy Bunnies', 'bunnyState'));
      tools.push(new Tool('Look no hands', 'nohandsstate'));


      let toolboxes = [];
      toolboxes.push(new Toolbox('My Shiny New Toolbox', tools));

      let newModule = new WorkbenchModule('My Module', toolboxes);

      let providerUnderTest = new MenuProvider();

      providerUnderTest.loadModule(newModule);

      provider.modules.count.should.equal(1);
      provider.getModule('My Module').should.not.be.null;

    });
  });
});
当我点击调试器时,语句工具是未定义的。我非常确定我已经为我的Karma测试正确配置了jspm。在调试Karma测试时,我可以看到每个文件都正确加载


我有什么遗漏吗?我只想指出正确的方向。如果需要添加更多代码或配置,请告诉我。

您没有导出类。将其添加到
工具的底部
文件:

export default Tool;

事实上,我是在第一行导出我的类。这个问题原来与Javascript不提升类这一事实有关。基本上,测试是在类被Karma和JSPM加载之前尝试使用它们。通过将以下内容添加到我的配置文件中,我可以通过显式加载文件来解决此问题:

jspm: {
  config: 'jspm.conf.js',
  loadFiles: ['src/app/angular-bootstrap.js', 'src/app/core/model/**/*.js', 'src/app/**/*.spec.js'], //'src/app/**/!(*.e2e|*.po).js'
  serveFiles: ['src/app/**/*.+(js|html|css|json|*jade*)'] // *.{a,b,c} to *.+(a|b|c) https://github.com/karma-runner/karma/issues/1532
}
这就是诀窍:'src/app/core/model//*.js'

就像一个切向的音符。我还对Karam为什么不加载我的Jade文件,这样我就可以使用JSPM导入它们感到不安。我所要做的就是将.jade扩展名添加到Karma提供的文件类型列表中

这是一个奇妙的Javascript世界