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

Использованиесопоставлений

Jestиспользуето«cпоставления»длятестированиязначенийразнымиспособами。Наэтойстраницебудутпредставленысопоставления,которыечащевсегоиспользуются。Полный список смотрите в описании<一个href="//www.ieatrice.com/ru/docs/expect">预计API

Стандартныесопоставления<一个class="hash-link" href="#стандартные-сопоставления" title="#">#

Самыйпростойспособпроверитьзначени——перипомощиточногоравенства。

测试 ( 'два плюс два равно четыре' , ( ) = > {
预计 ( 2 + 2 ) 托比 ( 4 ) ;
} ) ;

Вэтомкоде期望(2 + 2)возвращаетобъекто”жиданий”。Обычновамнепридетсяделатьсэтимиобъектамиожиданийничегокромекаквызыватьихвычислители。В этом примере кода.toBe (4)этовычислитель。Призапуске,Jestотслеживаетвсепровалившиесявычислителидлятого,чтобыонмогнапечататьдлявассообщенияобошибках。

托比используетObject.isдля проверки точного совпадения。Еслижевамнужнопроверитьзначениеобъекта,воспользуйтесьtoEqual:

测试 ( “присваиваниеобъекту” , ( ) = > {
常量 数据 = { один : 1 } ;
数据 ( “два” ] = 2 ;
预计 ( 数据 ) toEqual ( { один : 1 , два : 2 } ) ;
} ) ;

toEqualрекурсивнопроверяеткаждоеполеобъектаилимассива。

Вытакжеможетепротестироватьнапротивоположностьвычислителю:

测试 ( 'сложение положительных чисел не равно нулю' , ( ) = > {
( 一个 = 1 ; 一个 < 10 ; 一个 ++ ) {
( b = 1 ; b < 10 ; b ++ ) {
预计 ( 一个 + b ) 托比 ( 0 ) ;
}
}
} ) ;

Правдивость<一个class="hash-link" href="#правдивость" title="#">#

При тестировании иногда необходимо различать未定义的,и网址:но в некоторых ситуациях это не требуется。Jestсодержитвспомогательныефункциипозволяющиеявноуказывать,чтовамнужно。

  • toBeNullсоответствуеттолько
  • toUndefinedсоответствуеттолько未定义的
  • toBeDefinedявляетсяпротивоположностьюtoBeUndefined
  • toBeTruthyсоответствуетвсему、что如果инструкция рассматривает как正确
  • toBeFalsyсоответствуетвсему、что如果инструкция рассматривает как错误

Например:

测试 ( “零” , ( ) = > {
常量 n = ;
预计 ( n ) toBeNull ( ) ;
预计 ( n ) toBeDefined ( ) ;
预计 ( n ) toBeUndefined ( ) ;
预计 ( n ) toBeTruthy ( ) ;
预计 ( n ) toBeFalsy ( ) ;
} ) ;
测试 ( “ноль” , ( ) = > {
常量 z = 0 ;
预计 ( z ) toBeNull ( ) ;
预计 ( z ) toBeDefined ( ) ;
预计 ( z ) toBeUndefined ( ) ;
预计 ( z ) toBeTruthy ( ) ;
预计 ( z ) toBeFalsy ( ) ;
} ) ;

Следуетиспользоватьвычислитель,которыйнаиболееточноотражаетто,чтокоддолженделать。

Числа<一个class="hash-link" href="#числа" title="#">#

Большинствоспособовсравнениячиселимеютэквивалентныевычислители。

测试 ( “дваплюсдва” , ( ) = > {
常量 价值 = 2 + 2 ;
预计 ( 价值 ) toBeGreaterThan ( 3. ) ;
预计 ( 价值 ) toBeGreaterThanOrEqual ( 3.5 ) ;
预计 ( 价值 ) toBeLessThan ( 5 ) ;
预计 ( 价值 ) toBeLessThanOrEqual ( 4.5 ) ;
/ /托比иtoEqualэквивалентныпоотношениюкчислам
预计 ( 价值 ) 托比 ( 4 ) ;
预计 ( 价值 ) toEqual ( 4 ) ;
} ) ;

Дляпроверкиравенствачиселсплавающейзапятой,используйтеtoBeCloseToвместоtoEqualпотому、чтовынехотите,чтобытестполагалсянанебольшуюошибкуокругления。

测试 ( 'сложение чисел с плавающей запятой' , ( ) = > {
常量 价值 = 0.1 + 0.2 ;
/ /期望(值).toBe (0.3);Это не будет работать из-за ошибки округления
预计 ( 价值 ) toBeCloseTo ( 0.3 ) ; // А это сработает。
} ) ;

Строки<一个class="hash-link" href="#строки" title="#">#

Длясопоставлениястроксрегулярнымивыражениями,используйтеtoMatch:

测试 ( 'в команде нет места Я' , ( ) = > {
预计 ( “команда” ) toMatch ( / Я / ) ;
} ) ;
测试 ( 'но есть "ася" в Васе' , ( ) = > {
预计 ( “Вася” ) toMatch ( / ася / ) ;
} ) ;

Массивы и перебираемые объекты<一个class="hash-link" href="#массивы-и-перебираемые-объекты" title="#">#

Выможетепроверить,содержитлимассивилиитерируемыйобъектконкретноезначение,используяtoContain:

常量 shoppingList = (
“尿布” ,
“纸巾” ,
的垃圾袋 ,
“纸巾” ,
“牛奶” ,
] ;
测试 ( “购物单上有牛奶” , ( ) = > {
预计 ( shoppingList ) toContain ( “牛奶” ) ;
预计 ( ( shoppingList ) ) toContain ( “牛奶” ) ;
} ) ;

Исключения<一个class="hash-link" href="#исключения" title="#">#

Дляпроверкивозвратаошибкиконкретнойфункциейприеёвызове,используйтеtoThrow

函数 compileAndroidCode ( ) {
错误 ( 你使用了错误的JDK ) ;
}
测试 ( “编译android操作系统如预期般顺利” , ( ) = > {
预计 ( ( ) = > compileAndroidCode ( ) ) toThrow ( ) ;
预计 ( ( ) = > compileAndroidCode ( ) ) toThrow ( 错误 ) ;
//您也可以使用确切的错误消息或regexp
预计 ( ( ) = > compileAndroidCode ( ) ) toThrow ( 你使用了错误的JDK ) ;
预计 ( ( ) = > compileAndroidCode ( ) ) toThrow ( / JDK / ) ;
} ) ;

注意:抛出异常的函数需要在包装函数中调用,否则toThrow断言将会失败。

Имногоедругое<一个class="hash-link" href="#и-многое-другое" title="#">#

Это лишь проба пера。Дляознакомлениясполнымспискомсопоставлений,обратитевниманиена<一个href="//www.ieatrice.com/ru/docs/expect">справочнуюдокументацию

Послетогокаквыузналиовсехдоступныхсопоставлениях,следующимшагомвзглянитенато,какJestпозволяет<一个href="//www.ieatrice.com/ru/docs/asynchronous">тестироватьасинхронныйкод