Вью в $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.