grunt:使用不同的环境/流程运行多个mocha测试(代码片段)

author author     2022-12-29     657

关键词:

我想在不同的环境和数据库上运行多个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'
    ]);
);

当然,它不起作用,两个配置具有相同的名称。我试图通过mochaTest2but重命名第二个配置,但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(一个用于server,另一个用于slave)。

答案

这可能有点非正统但你可以通过使用两个能够运行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
另一答案

我知道这是一个老问题,但是因为我在寻找相同的答案时自己偶然发现它,结果grunt-mocha-test用子对象支持它。

例如,在这里您可以定义正在运行的服务器和从属测试,如下所示:

grunt.initConfig(
    ... // skipping other details 
    mochaTest : 
        server : 
            options:  ... ,
            src: ['test/server/*.js']
        ,
        slave : 
            options:  ... ,
            src: ['test/slave/*.js']
        
    
);

然后你可以通过“:”指定子对象来运行它们

grunt mochaTest:server

要么

grunt.registerTask('slave', ['jshint', 'mochaTest:slave']);

更多信息:https://www.polyglotdeveloper.com/cookbook/2016-03-03-How-to-run-multiple-test-files-in-different-groups-from-mocha/

Grunt 中的 NodeJS 环境变量

...题描述】:我正在将我的项目从简单的nodeserver.js转移到使用Grunt。我以前直接从webstorm运行我的应用程序,并且会为我设置环境变量。我怎样才能在Grunt中达到同样的效果?我需要从webstorm(windows)运行grunt,或者在运行grunt 查看详情

mocha单元测试框架简介

...可以在浏览器环境下运行,也可以在Node.js环境下运行。使用mocha,我们就只需要专注于编写单元测试本身,然后,让mocha去自动运行所有的测试,并给出测试结果。mocha的特点主要有:既可以测试简单的JavaScript函数,又可以测试... 查看详情

grunt的使用方法,环境配置和插件安装

...来越少了,但是插件数量还是相当多的,另外grunt和gulp的使用相当相似;grunt需要安装node和npm验证node是否安装:node-v验证npm是否安装:npm-v 下面是具体的使用方法:1》安装全局的配置环境npminstall-ggrunt-cli2》安装grunt在命令... 查看详情

对 Promise 结果运行多个测试 - Mocha

】对Promise结果运行多个测试-Mocha【英文标题】:RunningmultipletestsonPromiseresults-Mocha【发布时间】:2017-07-0614:34:30【问题描述】:我想对从Promise调用获得的结果运行一堆测试。我知道可以这样做:it(\'shouldpasstestfoo1\',()=>returnpromise... 查看详情

为 Mongoose 运行多个 Mocha 测试文件已损坏

】为Mongoose运行多个Mocha测试文件已损坏【英文标题】:RunningmultipleMochatestfilesforMongoosearebroken【发布时间】:2016-05-1206:30:00【问题描述】:根据AlexeyB.的评论,我修改了我的测试代码,发现导致我的测试代码出现相同错误的情况... 查看详情

如何适当地重用 mocha 测试的 describe 块?

...同模式运行的应用程序(将其视为针对不同平台运行以及使用不同协议),其中一个应用程序在每次打开页面时都有很长的加载时间。还有一些其他小的变化,但所有这些都可以使用wdio的设置变量来处理。目前我 查看详情

grunt-contrib-handlebars - 输出与我运行把手 npm 任务时不同

...:14【问题描述】:提前感谢您的时间和帮助。我正在尝试使用grunt-contrib-handlebars预编译把手(.hbs)模板当我运行运行任务时 查看详情

在 gruntfile 中执行 shell 脚本并将结果分配给变量

...riable【发布时间】:2013-08-2411:35:40【问题描述】:我正在使用grunt来管理一套mocha-run测试。mocha测试套件中要求的一件事是设置某些环境变量,以便根据运行测试的开发人员的环境正确执行测试。其中一个环境变量在每个开发人... 查看详情

用于开发/生产环境的备用 grunt.js 任务

】用于开发/生产环境的备用grunt.js任务【英文标题】:Alternategrunt.jstasksfordev/prodenvironments【发布时间】:2012-11-2719:44:13【问题描述】:我正在尝试设置我的grunt.js文件,以便它仅在我的生产服务器上运行时运行min任务-在我的本地... 查看详情

如何使用一个包含不同内容的模板和 grunt bake 创建单独的文件?

】如何使用一个包含不同内容的模板和gruntbake创建单独的文件?【英文标题】:Howtocreateseperatefilesusingonetemplatethatcontainsdifferentcontentwithgruntbake?【发布时间】:2018-02-1411:25:15【问题描述】:我有一个以某种方式设置样式的模板。... 查看详情

grunt环境搭建及使用

    jQuery在使用grunt,bootstrap在使用grunt,百度UEditor在使用grunt,你没有理由不学、不用!1.前言  各位web前端开发人员,如果你现在还不知道grunt或者听说过、但是不会熟练使用grunt,那你就真的真的真的out了(三个“真... 查看详情

如何使用 Mocha 运行单个测试?

】如何使用Mocha运行单个测试?【英文标题】:HowtorunasingletestwithMocha?【发布时间】:2012-06-0514:49:26【问题描述】:我使用Mocha来测试我的JavaScript内容。我的测试文件包含5个测试。是否可以运行特定测试(或一组测试)而不是文... 查看详情

更改 mocha 的默认超时

...27【问题描述】:如果我们有一个单元测试文件my-spec.js并使用mocha运行:mochamy-spec.js默认超时时间为2000毫秒。可以使用命令行参数覆盖部分测试:mochamy-spec.js--timeout5000是否可以全局更改所有测试的默认超时?即当您调用时,默... 查看详情

使用 mocha 时 getaddrinfo 无法解析主机文件中的地址

】使用mocha时getaddrinfo无法解析主机文件中的地址【英文标题】:getaddrinfofailstoresolveaddressinhostsfilewhenusingmocha【发布时间】:2014-04-2320:20:13【问题描述】:Node.js0.10.26OSX10.9.2(也在ubuntuvagrantbox上)在我系统上的两个不同模块中,... 查看详情

grunt-grunt使用(代码片段)

Grunt是前端的构建工具,类似后端使用的Ant,也是通过配置各种任务来达到前端代码自动构建的目地。Grunt和Grunt插件是通过npm 安装并管理的,npm是nodejs 的包管理器,所以第一步需要安装nodejs环境。安装grunt之前... 查看详情

使用 Mocha 进行测试:基于 Promise 的测试不会自行运行?

】使用Mocha进行测试:基于Promise的测试不会自行运行?【英文标题】:TestingexpresswithMocha:apromise-basedtestwillnotrunbyitself?【发布时间】:2017-01-1016:12:42【问题描述】:我有两个测试文件。当只存在test1.js时,不会运行任何测试,并且... 查看详情

需要使用一个 AWS CloudFormation 模板为不同的环境启动多个实例

】需要使用一个AWSCloudFormation模板为不同的环境启动多个实例【英文标题】:NeedMultipleinstancestobelaunchedfordifferentenvironmentsusingoneAWSCloudFormationTemplate【发布时间】:2019-10-0321:40:08【问题描述】:我需要构建3种不同类型的环境,每种... 查看详情

使用 mocha 运行节点检查器

】使用mocha运行节点检查器【英文标题】:Runnodeinspectorwithmocha【发布时间】:2017-04-2301:46:01【问题描述】:我似乎无法调试mocha脚本。我可以像node--inspectscript.js这样使用检查器运行节点。然后这给了我一个url去调试,比如chrome-de... 查看详情