Подання в $mol — це функція від свого стану, і це змінює те, як виглядає тест. Користувацький сценарій пишеться викликами власних методів подання: задати чернетку, виконати дію, прочитати те, що побачив би користувач.1app.draft('Milk')2app.add()3$mol_assert_equal(app.item_title(0),'Milk')Ні селекторів, ні браузера, ні Playwright із Cypress, ні очікування чогось. Той самий файл дає вам ще й таке:Швидкість. Тести виконуються в Node за мілісекунди; тисяча штук вкладається приблизно у хвилину. nodemy/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({34'add an item and delete it'($){5const app=$my_todo.make({$})67app.draft('Milk')8app.add()9$mol_assert_equal(app.items().length,1)10$mol_assert_equal(app.item_title(0),'Milk')11$mol_assert_equal(app.draft(),'')1213app.delete(0)14$mol_assert_like(app.item_rows(),[])15},1617'blank draft adds nothing'($){18const app=$my_todo.make({$})1920app.draft(' ')21app.add()22$mol_assert_like(app.items(),[])23},2425})26}Редагувати цю сторінку на GitHubЦе було корисно?ТакНіНазадРендерингДаліДеплойНа цій сторінціСценарій через методи поданняМок сервісуЧасЧерез DOMЧого Node-тест не покриваєНотатки з практикиДаліType to search the documentation.