2016-02-08 4 views
0

I имеют следующую структуру:узла не найден расслоение плотной для каталога ленточных испытаний

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

EDIT:

Это отлично работает для меня на Mac, и отлично работает на сервере Linux сборки. Я предполагаю, что его окна связаны с

+0

Имейте один основной тестовый файл 'main.test.js' и запустите все остальные тестовые файлы с' require'. 'node' не может запускать более одного файла. Он ищет файл, буквально названный '* .test.js'. – usandfriends

+0

@usandfriends, как я могу настроить этот другой файл для запуска всех других тестов? – user3574076

ответ

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); 
    }); 
    } 
}); 
+0

Я не понимаю. Im в основном java/C# парень, так что это js немного выше меня – user3574076

+0

@ user3574076 Я добавил много комментариев к коду. Разве это устраняет путаницу? – 1252748

+0

он делает, но откуда идут fs-extra и child_process? – user3574076