设置karma来测试node.js模块?

时间:2015-06-06 00:17:32

标签: javascript node.js karma-runner

我正在开发一个Node.js模块,我想在工作时使用Karma自动测试它。

在我的配置文件中,我设置了这个:

// list of files / patterns to load in the browser
files: [
  './index.js',
  './test/indexSpecs.js'
],

显然,由于Node.js未包含在浏览器文件中,因此出现此错误:

Uncaught ReferenceError: require is not defined

如果我添加:

files: [
  './node_modules/**/*.js',
  './index.js',
  './test/indexSpecs.js'
],

我收到一堆错误。我认为js文件按字母顺序加载,这是错误的。

我也认为Node.js不能在浏览器中运行,所以我想要做的可能是完全错误的。还有其他选择吗?

2 个答案:

答案 0 :(得分:3)

  

我正在开发一个Node.js模块,我想使用Karma进行自动测试   它在工作时。

你不应该。 Karma专为客户端代码而设计。

要自动测试代码,最简单的方法是创建一个与此类似的npm脚本(使用mocha):

"scripts": {
    "test": "mocha ./**",
    "test:watch": "npm run test -- -w"
}

然后,使用npm test按需运行测试,或npm run test:watch继续运行测试。

如果您愿意,也可以将grunt或gulp脚本与监视任务一起使用。

答案 1 :(得分:1)

你是对的,因为业力不适合测试服务器端代码。它将在浏览器的上下文中运行所有内容,这会导致您看到的问题。如果你想为服务器和客户端开发一个模块,你可以将karma与browserfiy一起使用,但你仍然需要在节点环境中运行测试。

相反,我建议使用mocha:一个简单而强大的测试运行器,非常适合测试节点模块。