我有以下结构:
src/examples/test_file.js
src/test/example.test.js
的package.json:
"scripts": {
"test": "node ./test/*.test.js"
},
我通过npm install tape --save
我跑npm test
然后得到:
> node ./test/*.test.js
module.js:328
throw err;
^
Error: Cannot find module 'c:\src\test\*.test.js'
at Function.Module._resolveFilename (module.js:326:15)
at Function.Module._load (module.js:277:25)
at Function.Module.runMain (module.js:430:10)
at startup (node.js:141:18)
at node.js:1003:3
npm ERR! Test failed. See above for more details.
根据这个:https://ci.testling.com/guide/tape
对整个目录的测试应仅适用于节点包的全局安装。如果没有全局安装磁带,我怎样才能使上述工作正常工作?
我正在使用节点5.4和Windows 10
编辑:
这对我在Mac上运行正常,并且在linux构建服务器上运行良好。我假设它的窗口相关
答案 0 :(得分:0)
如何设置其他文件来运行所有其他测试?
一个选项可能是获取test
目录中的文件列表,并为每个文件执行node
命令。假设以下是 test.js ,它将运行与您指定的模式匹配的每个文件。
var fs = require('fs-extra')
//child_process `exec` will let you normal bash-style executions
//eg, exec('ls') is like programmatically entering the ls command
//into a terminal window
, exec = require("child_process").exec;
//callback for after our exec process finishes
function execCallback(error, stdout, stderr) {
console.log(stdout);
}
fs.readdir will give us a list of files in the current ('.') directory
var testFiles = fs.readdir('.', function(err, files){
if (err){
console.log('error reading files', err);
}else{
//use this regex to reduce the list of files to only those which
//adhere to the pattern you specified using a wildcar "*.test.js"
files.filter(function(file){
return /^.*?\.test\.js/.test(file)
})
//filter returns the reduced array which is immediately passed to
//this forEach loop which will use our `exec` command to execute
//the shell command `node xxxxxx.test.js` for every file in the array we just created
.forEach(function(testFile){
exec('node ' + testFile, execCallback);
});
}
});
答案 1 :(得分:0)
"scripts": {
"test": "tape ./test/*.test.js"
},
尝试使用对“ tape”(而不是“ node”)的调用来更新脚本语句 npm将在本地安装中找到磁带,该磁带位于./node_moduels/.bin/tape 无需通过节点发送
答案 2 :(得分:0)
您不必在单个文件中导入所有测试。您可以使用 tape
命令和 shell 的 globbing(文件扩展):
tape test/**/*.test.js
或者使用磁带的内置通配符:
tape 'test/**/*.test.js'
这仅在磁带位于您的 PATH 中时才有效(package.json 中的脚本将 node_modules/.bin 添加到 PATH)。否则,您必须提供 tape
的路径:
node_modules/.bin/tape test/**/*.test.js