smalljs$molПошук⌘ KДокументаціяПісочницяПорівнянняЕкосистемаПро проєктUK
ТестуванняGetting StartedВступМентальна модельПочаток роботиВід TypeScript до view.treeСтруктура проєктуІнструментарійEssentialsВстановленняВидиСтан і реактивністьМаршрутизаціяРендерингТестуванняДеплойРозв'язання проблемDataОтримання данихСхеми данихGiper BazaMoreВітринаЗ React, Vue та SvelteЗбірник рецептівAdvancedПлагіниМетадані модуляОфлайнПодання-привидиAboutЧасті питанняКомандаРелізиAPI$mol_button_major$mol_button_minor$mol_string$mol_number$mol_text$mol_paragraph$mol_list$mol_row$mol_link$mol_check$mol_switch$mol_select$mol_scroll$mol_page$mol_pick

Тестування

Подання в $mol — це функція від свого стану, і це змінює те, як виглядає тест. Користувацький сценарій пишеться викликами власних методів подання: задати чернетку, виконати дію, прочитати те, що побачив би користувач.1app.draft( 'Milk' )2app.add()3$mol_assert_equal( app.item_title( 0 ), 'Milk' )Ні селекторів, ні браузера, ні Playwright із Cypress, ні очікування чогось. Той самий файл дає вам ще й таке:Швидкість. Тести виконуються в Node за мілісекунди; тисяча штук вкладається приблизно у хвилину. node my/hello/-/node.test.js ганяє тести одного модуля.Нульове налаштування. Файл hello.test.ts поруч із компонентом підхоплює складальник і компілює в -/node.test.js. Неперервна інтеграція на mam_build ганяє його й валить збірку, коли тест падає.Підміну сервісів через контекст. Кожен тест дістає власний $, і все, до чого компонент дотягується через this.$.X, підміняється присвоєнням дублера в цей $. Саме тому треба писати this.$.$mol_fetch, а не $mol_fetch: перше замінне, друге — ні.Змокований час. Таймери, створені через контекст, самі не цокають; $mol_after_mock_warp() виконує все, що стоїть у черзі.Справжній DOM, коли він потрібен. У Node-бандлі їде jsdom, тож dom_node() і querySelectorAll працюють у тому самому тестовому файлі.

Сценарій через методи подання

Візьмімо список справ зі Збірника рецептів: рядок draft?, список items, дія add і дія delete. Його тест живе в my/todo/todo.test.ts:1namespace $ {2 $mol_test({3 4 'add an item and delete it'( $ ) {5 const app = $my_todo.make({ $ })6 7 app.draft( 'Milk' )8 app.add()9 $mol_assert_equal( app.items().length, 1 )10 $mol_assert_equal( app.item_title( 0 ), 'Milk' )11 $mol_assert_equal( app.draft(), '' )12 13 app.delete( 0 )14 $mol_assert_like( app.item_rows(), [] )15 },16 17 'blank draft adds nothing'( $ ) {18 const app = $my_todo.make({ $ })19 20 app.draft( ' ' )21 app.add()22 $mol_assert_like( app.items(), [] )23 },24 25 })26}
Редагувати цю сторінку на GitHubЦе було корисно?ТакНіНазадРендерингДаліДеплой
На цій сторінціСценарій через методи поданняМок сервісуЧасЧерез DOMЧого Node-тест не покриваєНотатки з практикиДалі
Type to search the documentation.