在特定子模块中进行mocha测试?

时间:2015-09-29 11:06:21

标签: node.js mocha

我的应用程序包含许多较小的模块,位于node_modules/submodulename下的私有npm模块中。如何让mocha调用特定子文件夹中的测试?

我已关注https://github.com/mochajs/mocha/wiki/Using-mocha-programmatically,但似乎无效:

var log = console.log.bind(console)

var Mocha = require('mocha'),
    fs = require('fs'),
    path = require('path');

var testModule = function(moduleName){
    var dirName = 'node_modules/'+moduleName

    // Instantiate a Mocha instance.
    var mocha = new Mocha({
        ui: 'tdd'
    });

    // Add each .js file to mocha
    fs.readdirSync(dirName).filter(function(file){
        // Only keep the .js files
        return file.substr(-3) === '.js';
    }).forEach(function(file){
        log('Adding', file)
        mocha.addFile(
            path.join(dirName, file)
        );
    });

    // Run the tests.
    mocha.run(function(failures){
        process.on('exit', function () {
            process.exit(failures);
        });
    });
}

testModule('mycompany-blog')

2 个答案:

答案 0 :(得分:0)

mocha.addFile() 使用的目录必须是'测试'明确地显示,而不是包含测试目录的目录:

var Mocha = require('mocha'),
    fs = require('fs'),
    path = require('path');

var testModule = function(moduleName){
    var dirName = 'node_modules/'+moduleName+'/test'

    // Instantiate a Mocha instance.
    var mocha = new Mocha({
        ui: 'tdd'
    });

    // Add each .js file to mocha
    fs.readdirSync(dirName).filter(function(file){
        // Only keep the .js files
        return file.substr(-3) === '.js';
    }).forEach(function(file){
        log('Adding', file)
        mocha.addFile(
            path.join(dirName, file)
        );
    });

    // Run the tests.
    mocha.run(function(failures){
        process.on('exit', function () {
            process.exit(failures);
        });
    });
}

我已更新https://github.com/mochajs/mocha/wiki/Using-mocha-programmatically以反映这一点。

答案 1 :(得分:-3)

您不得将本地模块放在node_modules/中。该文件夹不会进入源代码管理。

你可以做的是创建一个文件夹privmod1并将测试放在privmod1/test然后cd privmod1并运行mocha。您想分别测试该模块。

或者,您可以在require('../privmod1')等测试文件中的父目录中要求/导入。

私有模块的其他选项:只需将它们放入您可以访问并使用githubuser/privmod1引用的github存储库中,或使用官方的npm私有模块系统。