Javascript AssertionError:预期{}是一个函数

Javascript AssertionError:预期{}是一个函数,javascript,unit-testing,mocha.js,chai,Javascript,Unit Testing,Mocha.js,Chai,我第一次和Chai一起使用摩卡咖啡时遇到了一个奇怪的错误。我以前使用过的唯一框架是Jasmine,如果这能帮助你找出我做错了什么的话 我只是想确保我的构造函数不会抛出错误。我已经能够将代码简化为这样,但仍然会出现错误: class MyLib { constructor() {} } export default MyLib; 这是测试文件: import chai from 'chai'; let { expect } = chai; import MyLib from '../in

我第一次和Chai一起使用摩卡咖啡时遇到了一个奇怪的错误。我以前使用过的唯一框架是Jasmine,如果这能帮助你找出我做错了什么的话

我只是想确保我的构造函数不会抛出错误。我已经能够将代码简化为这样,但仍然会出现错误:

class MyLib {
  constructor() {}
}

export default MyLib;
这是测试文件:

import chai from 'chai';
let { expect } = chai;

import MyLib from '../index';

describe('mylib-js', () => {
  describe('constructor', () => {
    it('should work', () => {
      expect(new MyLib()).to.not.throw();
    })
  });
});
这是摩卡咖啡的输出:

d:\path\to\mylib-js>mocha --require babel-core/register


  mylib-js
    constructor
      1) should work


  0 passing (23ms)
  1 failing

  1) mylib-js constructor should work:
     AssertionError: expected {} to be a function
      at Assertion.an (d:\path\to\mylib-js\node_modules\chai\lib\chai\core\assertions.js:169:10)

      at Assertion.assert (d:\path\to\mylib-js\node_modules\chai\lib\chai\utils\addChainableMethod.js:84:49)
      at Assertion.assertThrows (d:\path\to\mylib-js\node_modules\chai\lib\chai\core\assertions.js:1273:32)
      at Assertion.ctx.(anonymous function) [as throw] (d:\path\to\mylib-js\node_modules\chai\lib\chai\utils\addMethod.js:41:25)
      at Context.<anonymous> (test.js:10:4)
      at callFn (C:\Users\Myuser\AppData\Roaming\npm\node_modules\mocha\lib\runnable.js:315:21)
      at Test.Runnable.run (C:\Users\Myuser\AppData\Roaming\npm\node_modules\mocha\lib\runnable.js:308:7)
      at Runner.runTest (C:\Users\Myuser\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:422:10)
      at C:\Users\Myuser\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:533:12
      at next (C:\Users\Myuser\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:342:14)
      at C:\Users\Myuser\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:352:7
      at next (C:\Users\Myuser\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:284:14)
      at Immediate._onImmediate (C:\Users\Myuser\AppData\Roaming\npm\node_modules\mocha\lib\runner.js:320:5)
d:\path\to\mylib js>mocha——需要巴别塔核心/寄存器
mylib js
建造师
1) 应该有用
0通过(23毫秒)
1失败
1) mylib js构造函数应该可以工作:
AssertionError:预期{}是一个函数
位于Assertion.an(d:\path\to\mylib js\node\u modules\chai\lib\chai\core\assertions.js:169:10)
在Assertion.assert(d:\path\to\mylib js\node\u modules\chai\lib\chai\utils\addchaineablemethod.js:84:49)
位于Assertion.assertThrows(d:\path\to\mylib js\node\u modules\chai\lib\chai\core\assertions.js:1273:32)
at Assertion.ctx.(匿名函数)[as throw](d:\path\to\mylib js\node\u modules\chai\lib\chai\utils\addMethod.js:41:25)
在上下文中。(test.js:10:4)
在callFn(C:\Users\Myuser\AppData\Roaming\npm\node\u modules\mocha\lib\runnable.js:315:21)
在Test.Runnable.run(C:\Users\Myuser\AppData\Roaming\npm\node\u modules\mocha\lib\Runnable.js:308:7)
在Runner.runTest(C:\Users\Myuser\AppData\Roaming\npm\node\u modules\mocha\lib\Runner.js:422:10)
在C:\Users\Myuser\AppData\Roaming\npm\node\u modules\mocha\lib\runner.js:533:12
下一步(C:\Users\Myuser\AppData\Roaming\npm\node\u modules\mocha\lib\runner.js:342:14)
在C:\Users\Myuser\AppData\Roaming\npm\node\u modules\mocha\lib\runner.js:352:7
下一步(C:\Users\Myuser\AppData\Roaming\npm\node\u modules\mocha\lib\runner.js:284:14)
立即。_onImmediate(C:\Users\Myuser\AppData\Roaming\npm\node\u modules\mocha\lib\runner.js:320:5)

我不知道它在错误输出中从哪里得到
{}
。它想告诉我什么?

作为一条例外消息,它说
新的MyLib
是一个对象而不是一个函数

throw
assertion一起很好地工作应该是这样的

expect( () => new MyLib).not.to.throw()

如果您有
导出默认类MyLib{constructor(){}
,它会说什么?@SzabolcsDézsi:当我这样做时,我会得到完全相同的错误,应该是
expect(MyLib).to.not.throw()
?@dustmouse:“断言错误:预期[Function:MyLib]不会引发错误,但引发了'TypeError:无法将类作为函数调用'”
new MyLib
是一个对象而不是函数。它应该类似于
expect(()=>newmylib).not.to.throw()