Javascript 如何使用Grunt和Mocha以mtime顺序运行单元测试
所以,当您执行TDD时,您是否会等待它运行所有测试,直到您正在进行的测试?这需要太多的时间。当我很忙的时候,我会将测试文件重命名为aaaaaaaaaaaaaa_testsomething.test.js,这样它会首先运行,我会尽快看到错误 我不喜欢这种方法,我相信有解决办法,但我找不到。那么,使用Mocha以mtime顺序运行单元测试的最简单方法是什么?有-sort选项,但它只按名称对文件进行排序。如何按修改时间对它们进行排序 这是我的Grunfile.js:Javascript 如何使用Grunt和Mocha以mtime顺序运行单元测试,javascript,unit-testing,gruntjs,mocha.js,grunt-contrib-watch,Javascript,Unit Testing,Gruntjs,Mocha.js,Grunt Contrib Watch,所以,当您执行TDD时,您是否会等待它运行所有测试,直到您正在进行的测试?这需要太多的时间。当我很忙的时候,我会将测试文件重命名为aaaaaaaaaaaaaa_testsomething.test.js,这样它会首先运行,我会尽快看到错误 我不喜欢这种方法,我相信有解决办法,但我找不到。那么,使用Mocha以mtime顺序运行单元测试的最简单方法是什么?有-sort选项,但它只按名称对文件进行排序。如何按修改时间对它们进行排序 这是我的Grunfile.js: module.exports=函
module.exports=函数(grunt){
grunt.initConfig({
观察:{
测试:{
文件:['**/*.js','!**/node_modules/**'],
任务:['mochacli:local']
}
},
莫查利:{
选项:{
require:['assert'],
记者:"规格",,
保释金:是的,
超时:6000,
排序:对,
文件:['tests/*.js']
},
本地:{
超时:25000
}
}
});
grunt.loadNpmTasks(“grunt-mocha-cli”);
grunt.loadNpmTasks(“grunt-contrib-watch”);
grunt.registerTask('test',['mochacli:local']);
registerTask('livetests',['watch:tests']);
};代码>如果您正在使用摩卡,您可以设置。只有在您感兴趣的测试中:
describe(function () {
// these tests will be skipped
});
describe.only(function () {
// these tests will run
})
如果您使用的是摩卡,您可以设置。仅在您感兴趣的测试中:
describe(function () {
// these tests will be skipped
});
describe.only(function () {
// these tests will run
})
我不想发明自行车,因为我确信已经有一些东西实现了
…有时你不得不骑自行车;)
解决方案
这可以通过在Gruntfile.js
中注册中介来实现,以动态执行以下操作:
使用适当的模式获取所有单元测试文件(.js
)的文件路径
按文件/修改日期对每个匹配的文件路径进行排序
使用按时间顺序排序的文件路径配置mochacli.options.file
数组
使用运行mochacli
任务中定义的local
grunfile.js
按如下方式配置grunfile.js
:
module.exports=函数(grunt){
//附加内置节点模块。
var statSync=require('fs')。statSync;
grunt.initConfig({
观察:{
测试:{
文件:['**/*.js','!**/node_modules/**','!grunfile.js'],
任务:['runMochaTests']
}
},
莫查利:{
选项:{
require:['assert'],
记者:"规格",,
保释金:是的,
超时:6000,
文件:[]//
我不想发明自行车,因为我确信已经有一些东西实现了
…有时你不得不骑自行车;)
解决方案
这可以通过在Gruntfile.js
中注册中介来实现,以动态执行以下操作:
使用适当的模式获取所有单元测试文件(.js
)的文件路径
按文件/修改日期对每个匹配的文件路径进行排序
使用按时间顺序排序的文件路径配置mochacli.options.file
数组
使用运行mochacli
任务中定义的local
grunfile.js
按如下方式配置grunfile.js
:
module.exports=函数(grunt){
//附加内置节点模块。
var statSync=require('fs')。statSync;
grunt.initConfig({
观察:{
测试:{
文件:['**/*.js','!**/node_modules/**','!grunfile.js'],
任务:['runMochaTests']
}
},
莫查利:{
选项:{
require:['assert'],
记者:"规格",,
保释金:是的,
超时:6000,
文件:[]//我不想对测试进行重大更改。我希望mocha首先运行最新编辑的*.test.js文件。只需按mtime排序.test.js文件,而不是按名称。此外,我不希望它只运行单个文件。我只想更改顺序并运行所有测试,但最新的测试是先运行的。我不确定我是否理解控制测试的动机以这种方式执行顺序。我最初认为您在开发功能时有兴趣监视一个特定的测试或一组测试。不是吗?是的。但这是开发的初始阶段,很多事情几乎都与每个测试相关。我希望尽快看到我目前正在开发的单元的结果。但我也希望看到它继续在后台检查所有内容。如果在其他测试中出现错误,我希望快速切换到它们,就像在那里按Ctrl+s键,而不是向其中添加一些控制代码。据我所知,没有内置的方法可以按照您要查找的顺序运行测试。通常我会设置。只有在初始化期间我关心的测试上ial开发。一旦通过,我将删除.only并再次运行所有测试。我不想对测试进行重大更改。我希望mocha首先运行最新编辑的*.test.js文件。只需按mtime排序.test.js文件,而不是按名称。此外,我不希望它只运行单个文件。我只想更改顺序并运行所有测试s、 但是最近的一个-首先。我不确定我是否理解以这种方式控制测试执行顺序的动机。我最初认为您在开发一个特性时对监视一个特定的测试或一组测试感兴趣。不是这样吗?是的。但这是开发的初始阶段,很多事情都与几乎每个test。我希望尽快看到我目前正在工作的单元的结果。但我也希望它继续在后台检查所有内容。如果其他测试中出现错误,我希望快速切换到它们,就像在那里按Ctrl+s键,而不是向其中添加一些控制代码。据我所知,在o中没有内置的方法来运行测试你要找的订单,正常