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

看插件

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

观看插件界面#

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

连接成笑话#

要连接你的手表插件到Jest,添加它的路径守望者在您的Jest配置中:

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

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

应用(jestHooks)#

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

MyWatchPlugin {
应用 ( jesthooks. ) { }
}

下面是Jest中提供的钩子。

jestHooks.shouldRunTestSuite (testSuiteInfo)#

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

Наприклад:

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

jestHooks.onTestRunComplete(结果)#

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

Наприклад:

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

项目jestHooks.onFileChange ({})#

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

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

Наприклад:

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

观看菜单集成#

定制手表插件也可以通过指定一个键/提示对来添加或覆盖功能到手表菜单getUsageInfo方法和运行执行密钥的方法。

getUsageInfo (globalConfig)#

要在手表菜单中添加一个键,执行getUsageInfo方法,返回键和提示:

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

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

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

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

运行(globalConfig updateConfigAndRun)#

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

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

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

授权配置密钥#

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

定制#

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

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

推荐配置名称:

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

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

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

选择一个很好的关键#

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

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

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

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

如您所料,可以声明内置功能未使用的任何键。尽量避免使用难以在不同键盘上取得的按键(例如:e,),或默认不可见(例如,许多Mac键盘没有字符的视觉提示,如|,\ ',[',等等)。

当冲突发生时#

如果你的插件试图覆盖一个保留的键,Jest将错误输出一个描述性的消息,类似于:

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

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

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