【问题标题】:Make mocha test in particular submodules?在特定的子模块中进行 mocha 测试?
【发布时间】:2015-09-29 11:06:20
【问题描述】:

我的应用程序包含许多较小的模块,位于 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')

【问题讨论】:

    标签: node.js mocha.js


    【解决方案1】:

    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 以反映这一点。

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 这是不正确的:任何文件夹是否进入源代码管理完全取决于用户。
      • 此外,问题涉及通过 JavaScript 调用 mocha,而不是通过 shell。
      • 当您最初发布它并且我开始回答时,您没有包含任何 JavaScript。无论如何,对你有好处,祝你有美好的一天。感谢您浪费我的时间。
      • 我添加了代码来解释我已经尝试过的内容,以及堆栈上的良好礼仪。您回答了一个技术上不正确的讲座,并“cd 到每个文件夹并运行 mocha”,即使在我添加示例之前,这也是一个非常糟糕的答案。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 1970-01-01
      • 2019-11-07
      • 2016-02-23
      • 2018-11-12
      • 1970-01-01
      • 2018-05-01
      相关资源
      最近更新 更多