【问题标题】:mocha : how to run multiple JS test files under separate process environmentmocha:如何在单独的进程环境下运行多个 JS 测试文件
【发布时间】:2017-07-28 18:11:41
【问题描述】:

我是 Mocha 的新手,所以这可能是一个微不足道的问题,但还没有找到答案:

我有一个带有以下 package.json 的简单 NodeJS 项目

{
  "name": "test",
  "version": "1.0.0",
  "description": "test",
  "main": "index.js",
  "scripts": {
    "test": "mocha"
  },
  "author": "davide talesco",
  "license": "ISC",
  "devDependencies": {
    "chai": "^4.0.2",
    "mocha": "^3.4.2"
  }
}

以及test文件夹下的以下2个测试文件:

test1.js

process.env.NODE_ENV = 'test';

var chai = require('chai');
var should = chai.should();

describe('Test setProp', function(){
  it('env variable should be test', function(done){
    process.env.NODE_ENV.should.be.equal('test');
    return done();
  });
});

test2.js

process.env.NODE_ENV = 'prod';

var chai = require('chai');
var should = chai.should();

describe('Test setProp', function(){
  it('env variable should be prod', function(done){
    process.env.NODE_ENV.should.be.equal('prod');
    return done();
  });
});

当我运行 npm test 时,第一个测试成功完成,而第二个测试失败,如下所示

ie-macp-davidt:crap davide_talesco$ npm test

> pc-lib@1.0.0 test /Users/davide_talesco/development/crap
> mocha



  Test setProp
    1) env variable should be test

  Test setProp
    ✓ env variable should be prod


  1 passing (16ms)
  1 failing

  1) Test setProp env variable should be test:

      AssertionError: expected 'prod' to equal 'test'
      + expected - actual

      -prod
      +test

      at Context.<anonymous> (test/test1.js:11:36)



npm ERR! Test failed.  See above for more details.

很明显,测试是在同一个进程下运行的...... 我的问题是:如何让它们在完全独立的进程下运行,以便每个人都可以设置自己的环境?

谢谢,

大卫

【问题讨论】:

    标签: environment-variables mocha.js


    【解决方案1】:

    最简单的方法之一是使用Unix find 命令:

    find ./test -name '*.js' -exec mocha \{} \;

    我建议使用本地 mocha 二进制文件以避免在未全局安装时出现问题:

    find ./test -name '*.js' -exec ./node_modules/.bin/mocha \{} \;

    如果你想将它添加到 package.json,请注意反斜杠应该被转义:

    ...
    "scripts": {
        "test": "find ./test -name '*.js' -exec ./node_modules/.bin/mocha \\{} \\;"
    },
    ...
    

    【讨论】:

      【解决方案2】:

      如果您想在测试文件失败后立即中止测试,您可以这样做:

      find ./test -type f -name "*.js" -exec sh -c 'for n; do ./node_modules/.bin/mocha "$n" || exit 1; done' sh {} +
      

      【讨论】:

        【解决方案3】:

        您也可以使用mocha-parallel-tests

        要安装: https://www.npmjs.com/package/mocha-parallel-tests

        使用方法:

          "scripts": {
            "test": "mocha-parallel-tests"
          },
        

        好消息是它是一个合适的 mocha 运行器,因此您可以配置报告并通过标准 mocha 配置,如保释。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-04-05
          • 2018-08-22
          • 1970-01-01
          • 1970-01-01
          • 2013-10-18
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多