2012-09-30 169 views
0

为什么使用摩卡进行测试时以下代码不通过?用摩卡测试json.parse

我的例子模块:

module.exports = function(){ 
    JSON.parse("this is not json") 
} 

和我test.js:

var should = require("should") 
var module = require("./module") 

describe("error testing", function(){ 
    it("should throw an error", function(done){ 
    module().should.throw(); 
    done(); 
    }) 
}) 

我希望测试通过,但运行摩卡给了我下面的:

✖ 1 of 1 tests failed: 

1) error testing should throw an error: 
    SyntaxError: Unexpected token h 
    at Object.parse (native) 
    at module.js:9:8 
    at Context.<anonymous> (test.js:6:5) 
    at Test.run (/usr/local/lib/node_modules/mocha/lib/runnable.js:145:15) 
    at Runner.runTest (/usr/local/lib/node_modules/mocha/lib/runner.js:270:10) 
    at /usr/local/lib/node_modules/mocha/lib/runner.js:314:12 
    at next (/usr/local/lib/node_modules/mocha/lib/runner.js:198:14) 
    at /usr/local/lib/node_modules/mocha/lib/runner.js:207:7 
    at next (/usr/local/lib/node_modules/mocha/lib/runner.js:157:23) 
    at Array.0 (/usr/local/lib/node_modules/mocha/lib/runner.js:175:5) 
    at EventEmitter._tickCallback (node.js:192:40) 

回答

1

应.throw()期望在函数上调用,而不是函数的结果。更改此:

module().should.throw(); 

这样:

module.should.throw();