2014-10-28 72 views
4

我有正确的配置文件,配置文件,在后台运行,只是伟大的。只要我改变并保存一个文件,它就会重新执行测试......全部750个单元测试。我想只能运行几个。缺少手动黑客配置文件或注释掉很多文件中的数百个测试,有没有简单的方法来做到这一点?如何在业力中只运行某些测试?

E.g.当使用说摩卡运行命令行服务器测试时,我只使用正则表达式:mocha -g 'only tests that I want'。使它更容易调试和快速检查。

回答

4

不幸的是,你可以在业务启动时做到这一点,而不是在运行时。 如果你想动态地改变它,你必须付出更多的努力。

说你要专注于特定的一组/套件从一开始的测试中,在karma-mocha plugin page有此片段的代码做你想要什么:

module.exports = function(config) { 
    config.set({ 
    // karma configuration here 
    ... 

    // this is a mocha configuration object 
    client: { 
     // The pattern string will be passed to mocha 
     args: ['--grep', '<pattern>'], 
     ... 
    } 
    }); 
}; 

为了使<pattern>参数你必须将配置文件包装在配置器中,该配置文件将监听CLI并为您自定义karma配置。

看看this SO answer知道如何设置一个非常简单的配置器

+0

谢谢。我读过它,但即使这也取决于评论栏。当我运行命令行测试时,这很好;我只是'摩卡-g'表达''。但业力需要一段时间才能启动并自动重播。我希望能够拥有一些文件,我可以在其中包含我刚更改的文件,并自动将其提取出来。有任何想法吗? – deitch 2014-10-29 13:34:41

6

所以现在我觉得很愚蠢。摩卡支持非常窄的正则表达式匹配版本。

这种运行所有测试

describe('all tests',function(){ 
    describe('first tests',function(){ 
    }); 
    describe('second tests',function(){ 
    }); 
}); 

这只是运行的第一个测试“

describe('all tests',function(){ 
    describe.only('first tests',function(){ 
    }); 
    describe('second tests',function(){ 
    }); 
}); 

你也可以做it.only()

我应该已经注意到了。叹。

+0

尽管将执行限制为特定的测试或套件。我以为你想通过关键字来执行它们。无论如何,很高兴你找到了适合你需求的解决方案。 – MarcoL 2014-10-29 21:02:26

+0

我试图限制在飞行中的特定测试或套件。我认为实现这一目标的唯一方法就是像CLI这样的“宏观”方法,但不知何故实时注入业力。我没有想到自下而上微观化。这工作得很好。 – deitch 2014-10-30 09:36:53

0

我有同样的问题,这是我对karma.conf.js稍作修改的工作。 事实上,从命令行获取参数并修改“文件”中的模式。我使用minimist来解析参数列表。

在配置文件中:

/* Begin */ 
var minimist = require('minimist'); 
var argv = minimist(process.argv); 
var testBase="test/unit"; 
var testExt=".spec.js"; 
var unitTestPattern = testBase+'/**/*'+testExt; 
if ("test" in argv){ 
    unitTestPattern = testBase+"/"+argv["test"]+testExt; 
} 
/* End */ 
module.exports = function(config){ 
    config.set({ 
    //.... 

    files : [ 
    //.... 
     unitTestPattern,    //place here 
//  'test/unit/**/*.spec.js', //replace this 
    //.... 
    ], 
    //.... 

    }); 
}; 

运行在命令提示符:

karma start test/karma.conf.js --single-run --test #TEST_CASE_FILE# 
0

一个很好的扩展,可以帮助这里是卡玛 - 茉莉HTML的记者,livereload https://www.npmjs.com/package/karma-jasmine-html-reporter-livereload

或karma-jasmine-html-reporter https://www.npmjs.com/package/karma-jasmine-html-reporter?__hstc=72727564.86845f057bb4d741f59d578059e30644.1443860954685.1453095135802.1453138187458.37&__hssc=72727564.1.1453138187458&__hsfp=2285154675

它创建一个可以单独运行每个测试的调试页面。对于大型项目非常有用!

+0

呵呵,我没有看到。因此,不是自动重新运行所有测试,而是在调试页面选择它们? – deitch 2016-01-19 05:56:13

+0

如果你保留Karma的singlerun:假你可以运行单独的测试 – 2016-01-19 20:10:16

0

1)在你的karma.conf中。JS从终端获得PARAMS:

var files = (process.env.npm_config_single_file) ? process.env.npm_config_single_file : 'test/test_index.js'; 

2)为了运行一个测试,你将需要设置的选项对象与所有配置(无文件和预处理器):

var option = { 

    webpack: { 
    // webpack configuration 
    }, 

    // more configuration...... 
}; 

3)设置你的文件路径和预处理器:

option.files = [ 
     {pattern: files, watch: false} 
    ]; 

    option.preprocessors = {}; 

    option.preprocessors[files] = [ 'webpack', 'sourcemap' ]; 

    // call config.set function 
    config.set(option); 

4)运行在终端:

npm test --single_file=**/my-specific-file-spec.js 

欲了解更多信息,请查阅此PR: https://github.com/webpack/karma-webpack/pull/178

相关问题