如何添加Jest测试排序器以固定测试文件执行顺序?
固定Jest测试文件执行顺序的方法
你可以通过以下两种方式实现按指定文件名顺序执行测试:
方法一:自定义测试排序器(推荐)
- 在项目根目录创建一个名为
test-sequencer.js的文件,内容如下:
const Sequencer = require('@jest/test-sequencer').default; class CustomSequencer extends Sequencer { sort(tests) { // 按文件路径的字典序排序,匹配你的001/002/003命名规则 const sortedTests = [...tests]; return sortedTests.sort((a, b) => a.path.localeCompare(b.path)); } } module.exports = CustomSequencer;
- 修改你的Jest配置文件(比如
jest.config.js),添加testSequencer配置项:
module.exports = { // 其他已有配置... testSequencer: './test-sequencer.js', };
之后运行npm test或jest __test__时,测试文件就会按001_user.test.js → 002_project.test.js → 003_model.test.js的顺序执行。
方法二:禁用测试随机化(简单但需验证)
Jest默认会随机化测试文件的执行顺序,你可以在配置中禁用这个行为:
修改jest.config.js:
module.exports = { // 其他已有配置... randomize: false, };
这种方式会让Jest按内部默认的文件遍历顺序执行,由于你的文件名已经是数字前缀命名,多数情况下会匹配你想要的顺序,但不同操作系统的文件遍历逻辑可能有差异,不如自定义排序器可靠。
内容的提问来源于stack exchange,提问作者Swapnil Kotkar
相关产品推荐
相关产品推荐

