跳转到主要内容
版本:26.倍

看插件

Jest watch插件系统提供了一种方法来挂钩到Jest的特定部分,并定义在按下键时执行代码的观察模式菜单提示。结合这些特性,您可以为您的工作流开发定制的交互体验。

观看插件界面#

MyWatchPlugin {
//添加Jest生命周期事件的钩子
应用 ( jestHooks ) { }
//获取交互式插件的提示信息
getUsageInfo ( GlobalConfig ) { }
//当输入' getUsageInfo '时执行
运行 ( GlobalConfig , updateConfigAndRun ) { }
}

连接成笑话#

将你的手表插件连接到Jest,在下面添加它的路径watchPlugins在您的Jest配置中:

/ / jest.config.js
模块 出口 = {
/ /……
watchPlugins : ( “路径/ / yourWatchPlugin” ] ,
} ;

自定义手表插件可以将挂钩添加到Jest事件。这些钩子可以在手表模式菜单中使用或不具有交互式键添加。

应用(jestHooks)#

控件可以附加Jest钩子应用方法。此方法接收jestHooks参数,允许插件挂钩到测试运行生命周期的特定部分。

MyWatchPlugin {
应用 ( jestHooks ) { }
}

下面是Jest中提供的钩子。

jestHooks.shouldRunTestSuite (testSuiteInfo)#

返回一个布尔值(或promise 用于处理异步操作)来指定是否应该运行测试。

比如:

MyWatchPlugin {
应用 ( jestHooks ) {
jestHooks shouldRunTestSuite ( testsuiteinfo. => {
返回 testsuiteinfo. testPath 包括 ( “关键字” ) ;
} ) ;
//或承诺
jestHooks shouldRunTestSuite ( testsuiteinfo. => {
返回 承诺 解决 ( testsuiteinfo. testPath 包括 ( “关键字” ) ) ;
} ) ;
}
}

jestHooks.onTestRunComplete(结果)#

在每次测试运行结束时调用。它将测试结果作为一个参数。

比如:

MyWatchPlugin {
应用 ( jestHooks ) {
jestHooks ontestrunco​​mplete. ( 结果 => {
_hasSnapshotFailure = 结果 快照 失败 ;
} ) ;
}
}

项目jestHooks.onFileChange ({})#

在文件系统中发生更改时调用

  • project: Array:包括Jest正在观看的所有测试路径。

比如:

MyWatchPlugin {
应用 ( jestHooks ) {
jestHooks onFileChange ( ( { 项目 } ) => {
_projects = 项目 ;
} ) ;
}
}

观看菜单集成#

自定义手表插件还可以添加或覆盖功能,手表菜单中指定一个键/提示对getUsageInfo方法和运行执行密钥的方法。

getUsageInfo (globalConfig)#

要向监视菜单添加一个键,请实现getUsageInfo方法,返回键和提示:

MyWatchPlugin {
getUsageInfo ( GlobalConfig ) {
返回 {
关键 : “年代” ,
提示 : “做些什么” ,
} ;
}
}

这将在“监视模式”菜单中添加一行(›Press s去做某事。)

手表的使用
按下p以文件名正则表达式模式过滤。
按t按测试名称正则表达式模式进行过滤。
›按q退出观看模式。
›Press s去做某事。//这是我们的插件
按Enter键触发测试运行。

请注意:如果插件的键已作为默认密钥存在,则您的插件将覆盖该密钥。

运行(globalConfig updateConfigAndRun)#

处理由键返回的键按事件getUsageInfo,您可以实现运行方法。此方法返回promise 当插件想要将控制权交还给Jest时,可以解决这个问题。的布尔基指定Jest在取回控件后是否应该重新运行测试。

  • GlobalConfig: Jest当前全局配置的表示
  • updateConfigAndRun:允许您在交互式插件运行时触发测试运行。
MyWatchPlugin {
运行 ( GlobalConfig , updateConfigAndRun ) {
// 做一点事。
}
}

请注意:如果你打电话updateConfigAndRun,你的运行方法不应解析为真值,因为这会触发重复运行。

授权配置密钥#

出于稳定性和安全性的原因,只能使用部分全局配置键进行更新updateConfigAndRun。当前的白色列表如下:

定制#

插件可以通过您的Jest配置定制。

/ / jest.config.js
模块 出口 = {
/ /……
watchPlugins : (
(
“路径/ / yourWatchPlugin” ,
{
关键 : “k” , // < - 您的自定义密钥
提示 : '显示自定义提示' ,
} ,
] ,
] ,
} ;

推荐配置名称:

  • 关键:修改插件键。
  • 提示:允许用户自定义插件提示符中的文本。

如果用户提供了一个自定义配置,它将作为参数传递给插件构造函数。

MyWatchPlugin {
构造函数 ( { 配置 } ) { }
}

选择一个很好的关键#

Jest允许第三方插件覆盖它的一些内置特性键,但不是全部。具体来说,下面的键是不是overwritable:

  • c(清除过滤器模式)
  • (交互式更新不匹配的快照)
  • (退出)
  • u(更新所有不匹配的快照)
  • w(显示观看模式使用/可用操作)

以下键用于内置功能可以覆盖:

  • p(测试文件名模式)
  • t(测试名称模式)

正如您所期望的,任何未被内置功能使用的键都可以被声明。尽量避免使用在不同键盘上很难获得的键(例如:e,),或者默认不可见(例如,许多Mac键盘没有对字符的视觉提示,例如|”,,[',等等)。

当冲突发生时#

如果你的插件试图覆盖一个保留键,Jest将会错误地输出一个描述性的消息,像这样:

观察插件YourFaultyPlugin试图注册密钥,内部保留用于退出监视模式。请更改此插件的配置密钥。

还禁止第三方插件覆盖已在配置的插件列表中提前的另一个第三方插件保留的密钥(watchPlugins数组设置)。当这种情况发生时,你也会得到一个错误消息,试图帮助你修复:亚搏取款

观看插件yourfaultyplugin和hysfaultyplugin尝试注册密钥x。请更改其中一个冲突插件的密钥配置,以避免重叠。