【发布时间】:2018-03-24 22:13:40
【问题描述】:
所以当您执行 TDD 时,您是否会等待它运行所有测试,直到您正在处理的测试?这需要太多时间。当我赶时间时,我将测试文件重命名为 aaaaaaaaaaaaaaa_testsomething.test.js 之类的文件,这样它会先运行,然后我会尽快看到错误。
我不喜欢这种方法,我确信有解决方案,但我找不到。那么使用 Mocha 以 mtime 顺序运行单元测试的最简单方法是什么?有 -sort 选项,但它仅按名称对文件进行排序。如何按修改时间对它们进行排序?
这是我的 Gruntfile.js:
module.exports = function(grunt) {
grunt.initConfig({
watch: {
tests: {
files: ['**/*.js', '!**/node_modules/**'],
tasks: ['mochacli:local']
}
},
mochacli: {
options: {
require: ['assert'],
reporter: 'spec',
bail: true,
timeout: 6000,
sort: true,
files: ['tests/*.js']
},
local: {
timeout: 25000
}
}
});
grunt.loadNpmTasks('grunt-mocha-cli');
grunt.loadNpmTasks('grunt-contrib-watch');
grunt.registerTask('test', ['mochacli:local']);
grunt.registerTask('livetests', [ 'watch:tests']);
};
注意:它不是重复的。我不想每次保存源代码文件时都编辑我的测试或 Gruntfile.js。我在问如何修改 Grunt 任务,以便它首先从上次修改的 *.test.js 文件运行测试。如标题中所述,按 mtime 对单元测试进行排序。
简单场景:我在编辑器中打开 test1.test.js,更改它,按 Ctrl+B,它会从 test1.test.js 然后 test4.test.js 运行单元测试。我打开 test4.test.js,按 Ctrl+S、Ctrl+B 并从 test4.test.js 然后 test1.test.js 运行测试
我正在考虑一些 Grunt 插件来首先对文件进行排序,所以我可以将它的结果放在带有 grunt.config.set('mochacli.options.files', 'tests/recent.js,tests/older.js', ....); 的 'tests/*.js' 中,但我在那里找不到任何可以用作中间件的东西,不想发明自行车,因为我确信已经实现了一些东西。
【问题讨论】:
-
您实际上并没有阅读其他问题的答案。例如,使用 Mocha 的
grep选项不需要您编辑任何内容。 -
路易斯,我做到了。我不想进行一项测试。我想更改执行顺序。而且我不想每次运行测试时都修改 Gruntfile.js 本身。它在 Ctrl+B 上运行单元测试,从我提供的 Gruntfile.js 执行 grunt 测试文件。
-
使用 grep 选项要求您至少编辑 grep 选项。它需要您切换到 CLI。记住测试名称以将其放入 grep。我希望它运行按 *.test.js 文件的 mtime 排序的测试。很简单。
-
正如名称
grep所暗示的,它进行模式匹配。所以你可以用它运行多个测试。它不需要你像 Grunt 那样“切换到 CLI”。 -
路易斯。你能再读一遍我的问题吗?我想运行所有测试。没有一个,没有被 grep 过滤。我想运行所有测试,但最近的一个 - 首先。
标签: javascript unit-testing gruntjs mocha.js grunt-contrib-watch