- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
那么,当您进行 TDD 时,您是否会等待它运行所有测试,直到您正在处理的测试为止?这需要太多时间。当我很着急时,我将测试文件重命名为 aaaaaaaaaaaaaaaa_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 插件来首先对文件进行排序,这样我就可以将其结果放在“tests/*.js”中,并使用 grunt.config.set('mochacli.options.files', 'tests/recent.js,tests/older.js', ....);
但我找不到任何可以用作中间件的东西,我确信不想发明自行车已经为此实现了一些东西。
最佳答案
don't want to invent bicycle as I'm sure there's something for this implemented already.
...有时你必须骑自行车;)
<小时/>解决方案
这可以通过注册中间体 custom-task 来实现在您的 Gruntfile.js
中动态执行以下操作:
.js
) 的文件路径与适当的globbing模式。mochacli.options.file
数组本地
Target使用 grunt.task.run 在 mochacli
任务中定义Gruntfile.js
按如下方式配置您的 Gruntfile.js
:
module.exports = function(grunt) {
// Additional built-in node module.
var statSync = require('fs').statSync;
grunt.initConfig({
watch: {
tests: {
files: ['**/*.js', '!**/node_modules/**', '!Gruntfile.js'],
tasks: ['runMochaTests']
}
},
mochacli: {
options: {
require: ['assert'],
reporter: 'spec',
bail: true,
timeout: 6000,
files: [] // <-- Intentionally empty, to be generated dynamically.
},
local: {
timeout: 25000
}
}
});
grunt.loadNpmTasks('grunt-mocha-cli');
grunt.loadNpmTasks('grunt-contrib-watch');
/**
* Custom task to dynamically configure the `mochacli.options.files` Array.
* All filepaths that match the given globbing pattern(s), which is specified
# via the `grunt.file.expand` method, will be sorted chronologically via each
* file(s) latest modified date (i.e. mtime).
*/
grunt.registerTask('runMochaTests', function configMochaTask() {
var sortedPaths = grunt.file.expand({ filter: 'isFile' }, 'tests/**/*.js')
.map(function(filePath) {
return {
fpath: filePath,
modtime: statSync(filePath).mtime.getTime()
}
})
.sort(function (a, b) {
return a.modtime - b.modtime;
})
.map(function (info) {
return info.fpath;
})
.reverse();
grunt.config('mochacli.options.files', sortedPaths);
grunt.task.run(['mochacli:local']);
});
grunt.registerTask('test', ['runMochaTests']);
grunt.registerTask('livetests', [ 'watch:tests']);
};
<小时/>
附加说明
使用上面的配置。通过 CLI 运行 $ grunt livetests ,然后保存修改后的测试文件将导致 Mocha 根据文件上次修改日期按时间顺序运行每个测试文件(即最近修改的文件将首先运行,最后修改的文件将最后运行)。运行 $ grunt test
时也适用相同的逻辑。
但是,如果您希望 Mocha 首先运行最近修改的文件,然后按正常顺序(即按名称)运行其他文件,则自定义 runMochaTests
上面的 Gruntfile.js
中的任务应替换为以下逻辑:
/**
* Custom task to dynamically configure the `mochacli.options.files` Array.
* The filepaths that match the given globbing pattern(s), which is specified
# via the `grunt.file.expand` method, will be in normal sort order (by name).
* However, the most recently modified file will be repositioned as the first
* item in the `filePaths` Array (0-index position).
*/
grunt.registerTask('runMochaTests', function configMochaTask() {
var filePaths = grunt.file.expand({ filter: 'isFile' }, 'tests/**/*.js')
.map(function(filePath) {
return filePath
});
var latestModifiedFilePath = filePaths.map(function(filePath) {
return {
fpath: filePath,
modtime: statSync(filePath).mtime.getTime()
}
})
.sort(function (a, b) {
return a.modtime - b.modtime;
})
.map(function (info) {
return info.fpath;
})
.reverse()[0];
filePaths.splice(filePaths.indexOf(latestModifiedFilePath), 1);
filePaths.unshift(latestModifiedFilePath);
grunt.config('mochacli.options.files', filePaths);
grunt.task.run(['mochacli:local']);
});
关于javascript - 如何使用 Grunt 和 Mocha 按 mtime 顺序运行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46718669/
我使用 mtime 和 find 。我是第一次交。 我看到一个将文件从一个位置移动到另一个位置的脚本。 `find . \ -mtime +0 -exec mv {} target \ ;` 我想了
所以我的问题是关于使用 find -mtime(以及 atime & ctime)。正如我所知,-mtime -n 搜索比 n 天新的文件,+n 比 n 天早的文件,-mtime n 搜索恰好 n 天
我正在尝试获取目录上的mtime。我不确定这是否是正确的方法,但是当目录中的文件发生更改时如何获取 mtime ? 这就是我目前正在做的事情: let statTs = fs.statSync(cfg
linux下的find命令在目录结构中搜索文件,并执行指定的操作。linux下的find命令提供了相当多的查找条件,功能很强大,由于find的功能很强大,所以他的选项也很多,今天我们来细说一下fin
我正在尝试在不使用 Matlab 内置函数(例如 fft())的情况下实现一维 DFT。这是我的代码 function [Xk] = dft1(xn) N=length(xn); n = 0:1:N-
做什么find -mtime -4和 find -mtime +4做?我无法理解手册页中给出的示例。 最佳答案 嗯,我可以。 -mtime n File's data was last modifie
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a softwar
基本上我想做与系统调用 touch 相同的事情(如果文件不存在则创建文件,如果存在则更新其修改时间戳)。 std::string file = ...; std::ofstream(file.c_st
我正在尝试使用 -mtime +(variable) 查找文件,但每次我在 GNU 中执行以下命令时都会收到错误消息: find: missing argument to `-mtime' 在 AIX
当我对/dev/input/event* 这样的输入设备文件进行统计时,我得到文件的 mtime 作为系统启动时间。 它至少应该获取击键并将文件的 mtime 更新为当前时间!! 有人知道这些输入设备
我在家里做了一个文件夹,我在里面摸了一个文件。现在我正在执行 find /home -mtime 1 但它没有找到任何东西。这正常吗? 最佳答案 你需要使用: find /home -mtime -1
我有一个文件 a.dat,大小为 1GB,位于磁盘上。出于性能原因,我重用了这个文件并根据需要简单地覆盖它的内容,而不是创建一个新文件并让它增长(每个增长操作都必须更新它在 inode 中的大小)。
我在这里面临一个棘手的情况。我有一个基于 java 的应用程序,它试图通过 scp 远程机器复制某些文件。在执行这些任务时,我从应用程序端发现以下错误消息。 scp protocol error mt
我很清楚能够执行 find myfile.txt -mtime +5 来检查我的文件是否超过 5 天。但是我想在 myfile.txt 的天数中获取 mtime 并将其存储到变量中以供进一步使用。我该
如何从 Node.js 中找出系统的 mtime 分辨率? 我为什么问 在 Node.js 中,fs.watch 有时会发出重复的 change 事件。为了避免采取多余的操作,通常使用这样的代码(来自
我有一个大小为 550x128 的数组。我将它保存在一个 .mat 文件中并再次加载它以在另一个函数中使用它。 save('c:\\coeffs2.mat', 'descr2'); des2=load
当我使用 Files.getLastModifiedTime 从 Java 读取文件的 mtime 时,返回值被截断为整秒。我知道这适用于其他系统以获取毫秒分辨率的时间,那么我的有什么不同? 这是一个
当我使用 Files.getLastModifiedTime 从 Java 读取文件的 mtime 时,返回值被截断为整秒。我知道这适用于其他系统以获取毫秒分辨率的时间,那么我的有什么不同? 这是一个
更新 下面的 bash 命令行似乎表明它不是 R 问题(玩一下 sleep 看看它只会在每秒 0.43 和 0.93 后更新)。 (所以我更改了问题标签。) touch tmp.txt;stat tm
随着git-restoremtime脚本可以根据提交消息中的日期修改从 git 存储库中 check out 的文件的修改时间。 但是,如何使目录的 mtime 看起来直观、确定且一致? 我认为将每个
我是一名优秀的程序员,十分优秀!