跳到主要内容
版本:25.x.

观看插件

Jest Watch Plugin系统提供了一种方法来挂钩Jest的特定部分,并定义在按键时执行代码的监视模式菜单提示。合并,这些功能允许您为工作流程开发互动体验。

看插件接口

班级 mywatchplugin. {
//将挂钩添加到Jest生命周期事件
申请 jestHooks { }
//获取交互式插件的提示信息
getusageinfo. globalConfig { }
//当`getUsageInfo`的密钥输入时执行
跑步 globalConfig updateconfigandrun. { }
}

挂在jest

要将手表插件连接到Jest,请添加其路径watchPlugins在Jest配置中:

// jest.config.js.
模块 出口 = {
// ......
watchPlugins [ '路径/到/ yourwatchplugin' ]
} ;

定制的手表插件可以为Jest事件添加挂钩。这些钩子可以在手表模式菜单中添加或不添加交互键。

申请(jesthooks)

可以通过实施jest钩子附加申请方法。此方法收到ajestHooks参数允许插件挂钩测试运行的生命周期的特定部分。

班级 mywatchplugin. {
申请 jestHooks { }
}

下面是Jest中可用的钩子。

Jesthooks.shouldruntestsuite(testsuiteinfo)

返回布尔值(或承诺<布尔>用于处理异步操作)以指定应运行测试是否应运行。

例如:

班级 mywatchplugin. {
申请 jestHooks {
jestHooks 应该是 testSuiteInfo = > {
返回 testSuiteInfo testpath. 包括 '我的关键词' ;
} ;
//或承诺
jestHooks 应该是 testSuiteInfo = > {
返回 诺言 解决 testSuiteInfo testpath. 包括 '我的关键词' ;
} ;
}
}

Jesthooks.ontestrunco​​mplete(结果)

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

例如:

班级 mywatchplugin. {
申请 jestHooks {
jestHooks onTestRunComplete 结果 = > {
这个 _hassnapshotfailure. = 结果 快照 失败 ;
} ;
}
}

Jesthooks.onfileChange({Projects})

只要文件系统发生变化,就会被调用

  • 项目:数组:包括Jest正在观察的所有测试路径。

例如:

班级 mywatchplugin. {
申请 jestHooks {
jestHooks onfileChange. { 项目 } = > {
这个 _projects. = 项目 ;
} ;
}
}

看菜单集成

自定义手表插件也可以通过指定键/提示对,为无法添加或覆盖手表菜单的功能getusageinfo.方法和A.跑步方法来执行该键。

GetUsageInfo(GlobalConfig)

要为手表菜单添加密钥,请实现getusageinfo.方法,返回一个键和提示符:

班级 mywatchplugin. {
getusageinfo. globalConfig {
返回 {
钥匙 '
迅速的 '做一点事'
} ;
}
}

这将在“观看模式”菜单中添加一行>按S做点什么。

观看使用
>按P将P通过Filename Regex模式进行过滤。
>按T To过滤通过测试名称正则表达式模式。
>按Q键退出监​​视模式。
>按S做点什么。// < - 这是我们的插件
>按ENTER键触发测试运行。

笔记:如果你的插件的键已经作为默认键存在,你的插件将覆盖该键。

运行(GlobalConfig,UpdateConfigandRun)

从返回的密钥处理键新闻事件getusageinfo.,你可以实现跑步方法。此方法返回一个承诺<布尔>即可在插件返回jest时可以解决。这布尔指定Jest是否应该在获取控件后重新运行测试。

  • globalConfig:Jest当前全局配置的表示
  • updateconfigandrun.:允许您在交互式插件运行时触发测试运行。
班级 mywatchplugin. {
跑步 globalConfig updateconfigandrun. {
/ /做点什么。
}
}

笔记:如果你打电话来updateconfigandrun., 你的跑步方法不应该解决真实的值,因为它会触发双运行。

授权配置钥匙

出于稳定性和安全原因,只能更新全局配置键的一部分updateconfigandrun.。目前的白名单如下:

定制

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

// jest.config.js.
模块 出口 = {
// ......
watchPlugins [
[
'路径/到/ yourwatchplugin'
{
钥匙 “k” // <-您的自定义密钥
迅速的 '显示自定义提示'
}
]
]
} ;

推荐配置名称:

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

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

班级 mywatchplugin. {
构造函数 { 配置 } { }
}

选择合适的钥匙

Jest允许第三方插件覆盖其一些内置功能键,但并非所有内容。具体来说,以下键是不被覆盖

  • C(清除过滤器模式)
  • 一世(以交互方式更新非匹配的快照)
  • 问:(退出)
  • (更新所有非匹配快照)
  • W.(显示手表模式使用/可用操作)

内置功能的以下键可以覆盖

  • P.(测试文件名模式)
  • T.(测试名称模式)

可以索赔内置功能不使用的任何密钥,如您所预期的那样。尽量避免使用难以在各种键盘上获得的键(例如É.)默认情况下或不可见(例如,许多Mac键盘没有用于字符的可视提示|\[, ETC。)

发生冲突时

如果您的插件尝试覆盖保留钥匙,则Jest将使用描述性消息进行错误,如:

观看插件yourfaultyplugin试图注册键问:,这是保留内部退出手表模式。请更改此插件的配置键。

第三方插件也被禁止覆盖另一个第三方插件在配置插件列表前面已经保留的密钥(watchPlugins阵列设置)。发生这种情况时,您还会收到一条错误消息,以帮助您解决:亚搏取款

观看插件YourFaultyPlugin和TheirFaultyPlugin都试图注册密钥X。请更改其中一个冲突插件的关键配置以避免重叠。

最后一次更新在经过Sebastien Lorber