我正在开发一个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不能在浏览器中运行,所以我想要做的可能是完全错误的。还有其他选择吗?
答案 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:一个简单而强大的测试运行器,非常适合测试节点模块。