node.js - 咕噜声 : Running multiple mocha tests with different environments/processes

标签 node.js gruntjs mocha.js

我想在不同的环境和数据库上运行多个 Mocha 测试。

暂定是创建两个单独的 grunt 配置:

grunt.initConfig({
    // first one
    mochaTest: {
       options: { ... },
       src: ['test/server/*.js']
    },
    // second one
    mochaTest: {
        options: { ... },
        src: ['test/slave/*.js']
    },
    env: {
        dev: { NODE_ENV: 'development' },
        test: { NODE_ENV: 'test' }
    },
});

grunt.registerTask('test', function (target) {
    if (target === 'server') {
        return grunt.task.run([
            'env:test',
            'mochaTest' // the first one
        ]);
    }
    if (target === 'slave') {
        return grunt.task.run([
            'env:dev',
            'mochaTest' // the second one
        ]);
    }
    grunt.task.run([
        'test:server',
        'test:slave'
    ]);
});

当然,两个配置同名是不行的。我尝试通过 mochaTest2 重命名第二个配置,但 grunt 无法识别它。

然后,我尝试将其放在同一个 mochaTest 任务中,但测试在相同的环境和进程中运行。

grunt.initConfig({
    mochaTest: {
        server: {
            options: { ... },
            src: ['test/server/*.js']
        },
        slave: {
            options: { ... },
            src: ['test/slave/*.js']
        }
    },
    env: {
        dev: { NODE_ENV: 'development' },
        test: { NODE_ENV: 'test' }
    },
});

grunt.registerTask('test', function (target) {
    if (target === 'server') {
        return grunt.task.run([
            'env:test',
            'mochaTest:server'
        ]);
    }
    if (target === 'slave') {
        return grunt.task.run([
            'env:dev',
            'mochaTest:slave'
        ]);
    }
    grunt.task.run([
        'test:server',
        'test:slave'
    ]);
});

理想的解决方案应该在单独的进程中运行两个 mochaTest(一个用于服务器,另一个用于从属)。

最佳答案

这可能有点不正统,但您可以通过使用两个都能够运行 mocha 测试的单独插件来解决您所描述的无法调用“mochaTest”两次的问题。

安装:

npm install -save grunt-simple-mocha
npm install --save grunt-mocha-test

负载:

grunt.loadNpmTasks('grunt-mocha-test');
grunt.loadNpmTasks('grunt-simple-mocha');

配置:

mochaTest: {
      test: {
        src: ['test/*serverTests*.js']
      }
    },

simplemocha: {
      options: {
        ui: 'bdd'
      },
      all: { src: ['test/*slaveTests*'] }
    }

注册任务:

grunt.registerTask('serverTests', ['mochaTest']);
grunt.registerTask('slaveTests', ['simplemocha']);
grunt.registerTask('allTests', ['mochaTest', 'simplemocha']);

执行:

grunt serverTests  // run just server tests
grunt slaveTests   // run just slave tests
grunt allTests     // run both server and slave tests

关于node.js - 咕噜声 : Running multiple mocha tests with different environments/processes,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35297665/

相关文章:

node.js - Bootstrap 中的 Grunt 依赖冲突

javascript - 如何等到 vscode.windows.terminal 操作结束?

javascript - Node.js 中的 HTTP 请求不起作用?

node.js - Webpack 生产构建失败 : "Can' t resolve 'aws-sdk' "

javascript - 在 Node.js 中使用 Slim 或 Haml & Sass/SCSS?

javascript - Grunt Watch 反复显示 "Warning: must provide pattern"

javascript - 如何将我手动添加到项目(JS 和 CSS)的 Assets 文件自动链接到模板文件

node.js - 您如何安装和运行 Mocha,Node.js 测试模块?安装后获取 "mocha: command not found"

node.js - 我如何通过 Mocha 的模拟 promise 进行测试?

Node.js 强大的重命名上传文件