2016-02-13 35 views
0

我在第一次使用Mocha和Chai時遇到了一個奇怪的錯誤。我之前使用過的唯一框架是Jasmine,如果這能幫助你弄清楚我做錯了什麼。AssertionError:預計{}是函數

我只是想確保我的構造函數不會拋出錯誤。我已經能夠將代碼減少到這一點,仍然得到錯誤:

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) 

我不知道它從錯誤輸出中得到{}。它想告訴我什麼?

+0

如果你有'export default class MyLib {constructor(){}}',它會說什麼? –

+0

@SzabolcsDézsi:當我這樣做時,我得到了完全相同的錯誤 – damd

+1

應該是'expect(MyLib).to.not.throw();'? – lintmouse

回答

1

作爲異常消息說new MyLib是一個對象不是函數。

它應該是這樣的,以與throw斷言配合良好。

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