正文
今天我们很高兴地宣布Jest 23,这是我们迄今为止最大的主要版本!我们与100多名贡献者一起发布了大量功能和错误修复程序。感谢社区中的每个人让JavaScript测试更加轻松。
我们也欢迎
Babel
和
Webpack
加入Jest社区!从Mocha转换为Jest 23 Beta后,Webpack的总测试套件时间从13分钟减少到2分20秒。
#blazingmeansgood
以下是Jest 23的一些重点和突破性变化。
有关完整列表,请参阅更改
日志
。
交互式快照模式
我们添加了一个新的默认监视菜单选项,我们称之为交互式快照模式。此新模式允许您逐步查看每个失败的套件中的每个失败快照,以查看失败的快照,并选择单独更新或跳过每个快照。
请在此处查看交互式快照模式
文档
。
快照属性匹配器
通常,您正在快照的对象包含生成的值,如日期和ID。 Jest现在允许您将属性传递给快照匹配器,该快照匹配器指定数据的结构而不是特定的值。然后在序列化匹配器类型(而不是值)之前验证这些属性匹配器,从而为测试运行提供一致的快照结果。
有关详细信息,请参阅更新的
toMatchSnapshot文档
或
“属性匹配器”指南
。
自定义异步匹配器
我们现在支持expect.extends的异步匹配器!异步匹配器返回Promise,以便您可以等待匹配器解析。举个例子:
文档
可在此处获得。
句子自定义不对称匹配器
当您只关心不对称平等时,非对称匹配器是一个很好的工具。例如,当左侧预期是右侧具有某些属性子集的对象时,而不是完全匹配。 Jest提供了许多开箱即用的不对称匹配器,在此版本中我们引入了自定义非对称匹配器。
Jest 遍历
@mattphillipsio
已经将Jest-each软件包捐赠给了Jest Core(感谢Matt!)。 jest-each是一个受
mocha-each
和
Spock数据表启发
的库,它允许您定义测试用例表,然后使用指定的列值对每一行运行测试。我们支持所有类型的describe和test的数组类型和模板文字。文档可以在
这里
找到,对于那些还没有在Jest 23上的,我们可以在
jest-each
找到。
快速修复表格格式(
参见Prettier 1.13
)!
新的Matchers
如果我们认为它们对Jest社区中的大量人员有用,并且将大多数匹配者留给社区(参见
jest-extended
),我们只会将匹配器添加到核心。一些匹配者将切入核心,Jest 23补充道:
-
nthCalledWith
-
toReturn
-
toReturnTimes
-
toReturnWith
-
lastReturnedWith
-
nthReturnedWith
-
toStrictEqual
请在
此处
查看更新的期望文档。
Debug Hanging Tests
我们在问题跟踪器上看到的一个常见问题与测试运行后挂起的“Jest”有关。这通常是由于应用程序代码处于打开状态,导致Jest无法退出。过去,用户已经使用--forceExit来修复(不推荐)。
为了帮助调试这些问题,我们现在检测Jest何时不退出:
我们提供了一个新标志--detectOpenHandles来帮助找到打开的句柄:
请在
此处
查看更新的CLI文档。
观看模式插件
我们已完全重写了监视模式系统,以允许将自定义插件添加到监视模式。 Watch Mode Plugins现在可以挂钩Jest事件并在Watch Mode菜单中提供自定义菜单选项。所有默认的Watch Mode提示都在此系统中实现为插件,
此处
提供了创建自己的文档。
通过这一改变,我们现在还可以通过
jest-watch-typeahead
将类型支持作为Watch Mode插件带回来!
有关文档和安装说明,请参阅
jest-watch-typeahead
。非常感谢
@rogeliog
了解新的watch mode插件系统和jest-watch-typeahead插件!
突破性变化
与每个主要版本一样,我们正在进行一些重大更改,以便在未来进行更大的更改,并将测试体验提升到一个新的水平。以下是您可能会看到的最大变化列表:
-
需要测试描述和功能:我们现在失败的测试不包括功能和描述。
-
从React快照中删除未定义的props:较小的快照和正确的React行为。
-
删除弃用:我们删除了mapCoverage,因为不再需要它。另外,我们删除了jest.genMockFunction和jest.genMockFn,因为它们与jest.fn相同。
-
将故障名称添加到故障:我们将快照名称(如果提供)添加到快照故障消息中,以便更容易找到失败的快照。
-
替换模拟时间戳:我们用invocationCallOrder替换了模拟时间戳,因为两个或模拟通常可能具有相同的时间戳,从而无法测试调用顺序。
-
将结果添加到模拟快照:我们将模拟函数调用结果添加到快照,以便跟踪调用和调用结果。
其他改进
-
监视模式覆盖:现在,覆盖范围仅限于在监视模式下或使用--onlyChanged和--findRelatedTests时测试的文件。
-
版本文档:我们将每个次要版本的文档添加回Jest 22,并从文档中删除了所有“Requires Jest X.X +”。
-
更好的快照摘要:我们对快照摘要输出进行了全面检查,以使过时的快照更具信息性。
-
更好的堆栈跟踪:我们将堆栈跟踪添加到异步错误,超时错误,expect.assertions和抛出的非错误。我们还在代码框中指出了这一列!
-
更好的React 16支持:为React.Fragment,React.forwardRef和React.createContext添加快照支持。
-
跟踪模拟返回和抛出值:添加mock.results,其中包含每个模拟调用的返回值或抛出值。
-
Blazing🔥:我们在自述文件中添加了一个炽热的徽章,表明Jest非常棒。
Jest Summit
上周,Jest核心团队在Facebook伦敦举行了Jest Summit,在那里工作并发布了Jest 23,宣布了Jest Open Collective,并进行了多次会谈: