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

Підготовкатаочистка

Частопідчаснаписаннятестівєпевнапідотовчаробота,якаповиннабутивиконанапередзапускомтестіватакожпевнафінальнаробота,якаповиннабутивиконанапіслязапускутестів。JestНадаєДопоміжніфункції,щобВпоратисьзцим。

Повторенняналаютуваньдлябагатьохтестів

кщоуваспевнізадачі,яківиповиннівиконуватищоразудлябагатьохтестів,Використовуйте摘要іafter

Наприклад,припустимо,щокількатестіввзашмодієзбазоюданихміст。увасєметодinitializeCityDatabase(),якийповиненбутивикликанийпередкожнимТестомМетодclearcitydatabase(),якийповиненбутивикликанийпіслякожноготесту。Виможетезробитинаступне:

摘要 => {
initializeCityDatabase. ;
} ;
after => {
clearcitydatabase. ;
} ;
测试 '城市数据库有维也纳' => {
预计 iscity. '维也纳' Tobeththy. ;
} ;
测试 '城市数据库有圣胡安' => {
预计 iscity. '圣胡安' Tobeththy. ;
} ;

摘要Та.afterМожутьоброблятиАсинхроннийКодТакСамо,якТести.- отримушчипараметр.完毕АбоПовертаючипроміс。Наприклад,якщофункціяinitializeCityDatabase()Поверташпроміс,якийвиконашться,КолиБуденіціалізована,Миможемоповернутицейпроміс:

摘要 => {
返回 initializeCityDatabase. ;
} ;

Одноразовеналаютування.

інколивампотрібноВиконатиналаштуванняпередтестамишеодинРазнапочаткуфайла。当设置是异步时,这可以特别麻烦,因此您不能在线完成。JestНадаєМетоди.Beforeall.і毕竟длявикористаннявтакихситуаціях。

Наприклад,якщоinitializeCityDatabase.іclearcitydatabase.Поверташтьпромісиібазаданихмістможебутиповторновикористанаврізнихтестах,Миможемозмінитинашкоднатакий:

Beforeall. => {
返回 initializeCityDatabase. ;
} ;
毕竟 => {
返回 clearcitydatabase. ;
} ;
测试 '城市数据库有维也纳' => {
预计 iscity. '维也纳' Tobeththy. ;
} ;
测试 '城市数据库有圣胡安' => {
预计 iscity. '圣胡安' Tobeththy. ;
} ;

Контекст.

зазамовчуванняміБлокизастосувуштьсядокожногоТестууфайлі。Витакожможетегрупуватитестивикористовушчиблок描述。КолиТестизнаходятьсяВсерединіБлоку描述,Блоки.іЗастосовуштьсялишедотестівВсерединіцого描述

例如,假设我们不仅仅是一个城市数据库,还没有食物数据库。我们可以为不同的测试做不同的设置:

//适用于此文件中的所有测试
摘要 => {
返回 initializeCityDatabase. ;
} ;
测试 '城市数据库有维也纳' => {
预计 iscity. '维也纳' Tobeththy. ;
} ;
测试 '城市数据库有圣胡安' => {
预计 iscity. '圣胡安' Tobeththy. ;
} ;
描述 '与城市相匹配食物' => {
//仅适用于此描述块的测试
摘要 => {
返回 initializefooddatabase. ;
} ;
测试 '维也纳<3香肠' => {
预计 IsValidCityFoodPair. '维也纳' 'Wiener Schnitzel' 成为 真的 ;
} ;
测试 '圣胡安<3种植' => {
预计 IsValidCityFoodPair. '圣胡安' 'mofongo' 成为 真的 ;
} ;
} ;

请注意,顶级摘要在之前执行摘要在 - 的里面描述堵塞。它可能有助于说亚搏取款明所有钩子的执行顺序。

Beforeall. => 安慰 日志 “1 - beforeAll” ;
毕竟 => 安慰 日志 '1 - 追随' ;
摘要 => 安慰 日志 '1 - presseach' ;
after => 安慰 日志 '1 - 追随' ;
测试 '' => 安慰 日志 '1 - 测试' ;
描述 '范围/嵌套块' => {
Beforeall. => 安慰 日志 '2 - beforeall' ;
毕竟 => 安慰 日志 '2 - 追随' ;
摘要 => 安慰 日志 '2 - 摘要' ;
after => 安慰 日志 '2 - 追随' ;
测试 '' => 安慰 日志 '2 - 测试' ;
} ;
// 1 - beforeall
// 1 - 婚姻
// 1 - 测试
// 1 - 赛后
// 2 - beforeall
// 1 - 婚姻
// 2 - 前后
// 2 - 测试
// 2 - 赛后
// 1 - 赛后
// 2 - 追随
// 1 - 追随

描述块和测试块的执行顺序

Jest在测试文件中执行所有描述处理程序它执行任何实际测试。这是在里面设置和拆除的另一个原因前*后*处理程序而不是在描述块内。一旦描述块完整,默认情况下,Jest在收集阶段中遇到的顺序串行运行所有测试,然后等待每个完成并在继续之前整个整理。

考虑以下说明性测试文件和输出:

描述 '外' => {
安慰 日志 '描述外 - a' ;
描述 '描述内部1' => {
安慰 日志 '描述内部1' ;
测试 '测试1' => {
安慰 日志 '测试内部1' ;
预计 真的 toequal. 真的 ;
} ;
} ;
安慰 日志 '描述外b' ;
测试 '测试1' => {
安慰 日志 '描述外部' ;
预计 真的 toequal. 真的 ;
} ;
描述 '描述内部2' => {
安慰 日志 '描述内部2' ;
测试 “描述内心的测试2” => {
安慰 日志 “描述内心的测试2” ;
预计 错误的 toequal. 错误的 ;
} ;
} ;
安慰 日志 '描述外部c' ;
} ;
//描述外A
//描述内部1
//描述外b
//描述内部2
//描述外c
//测试描述内部1
//测试描述外部
//测试描述内部2

Загальніпоради

Якщотестпадає,одназпершихречей,якувартоперевірити——цечипадаєцейтест,якщозапускаєтьсялишевін。要使用Jest只运行一个测试,请暂时更改它测试命令到A.test.only.

测试 只要 “这将是唯一运行的测试 => {
预计 真的 成为 错误的 ;
} ;
测试 '这个测试不会运行' => {
预计 '一个' 成为 '一个' ;
} ;

Якщоувасєтест,якийчастопадає,коливінзапускаєтьсязіншимитестамивнаборі,аленепадає,колизапущенийлишевін,великаймовірність,щонаньоговпливаєщосьзіншихтестів。частоцеможнавиправити,ОчистившиспільнийстанЗДопомогою摘要。如果您不确定是否正在修改某些共享状态,您也可以尝试一个摘要那个日志数据。