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

Setup karma to test a node.js module?

我正在开发一个 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 在浏览器中不能是 运行,所以我试图做的可能是完全错误的。有替代方案吗?

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

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

I'm developing a Node.js module, and I want to use Karma to auto-test it while working.

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

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

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

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

如果愿意,您也可以将 g运行t 或 gulp 脚本用于监视任务。