代码之家  ›  专栏  ›  技术社区  ›  Michael Durrant

如何使用npm使用通配符在多个目录中运行测试

  •  0
  • Michael Durrant  · 技术社区  · 4 年前

    "test": "mocha *.spec.js *.test.js test/*.spec.js test/*.test.js",
    

    它按我的要求运行,即根目录(2)中的所有测试和规范文件加上test/(2)中的任何文件。所以4号快跑。

      4 passing (4ms)                                                                                           
    

    "test": "mocha",
    "test": "mocha *.spec.js *.test.js",
    "test": "mocha **/*.spec.js **/*.test.js",
    "test": "mocha */*.spec.js */*.test.js",
    

    但这些测试只运行了4个测试中的2个。2个在根中,2个在测试中/

    我也试过用

    --recursive
    

    如何使用通配符以较短的语法运行所有4个?

    0 回复  |  直到 4 年前
        1
  •  -2
  •   jonrsharpe A l w a y s S u n n y    4 年前

    the docs :

    You should always quote your globs in npm scripts . 如果你使用 双引号,是UNIX上的shell扩展了全局。在 另一方面,如果使用单引号,则 node-glob 模块

    具有以下结构(一个 it mocha@7.1.0

    temp/
        node_modules/
        test/
            four.test.js
            three.spec.js
        one.test.js
        package-lock.json
        package.json
        two.spec.js
    

    使用脚本:

    "test": "mocha '**/*.spec.js' '**/*.test.js'"
    

    "test": "mocha \"**/*.spec.js\" \"**/*.test.js\""
    

    运行了所有四个测试:

    > temp@1.0.0 test path/to/temp
    > mocha '**/*.spec.js' '**/*.test.js'
    
    
    
      ✓ three
      ✓ two
      ✓ one
      ✓ four
    
      4 passing (10ms)
    

    相比之下,没有引用的版本 只有 在中运行测试 test/


    您可以使用该模式进一步简化 **/*.{spec,test}.js ; 同样,这需要在脚本中使用单引号或双引号。