Pohled $mol je funkcí svého stavu, a to mění podobu testu. Uživatelský scénář se zapisuje jako volání vlastních metod pohledu: nastavte rozepsaný text, spusťte akci, přečtěte, co by uživatel viděl.1app.draft('Milk')2app.add()3$mol_assert_equal(app.item_title(0),'Milk')Žádné selektory, žádný prohlížeč, žádný Playwright ani Cypress, žádné čekání na cokoli. Tentýž soubor vám navíc dává:Rychlost. Testy běží v Node v milisekundách; tisíc jich zabere zhruba minutu. nodemy/hello/-/node.test.js spustí ty pro jeden modul.Nulová konfigurace.hello.test.ts vedle komponenty builder posbírá a přeloží do -/node.test.js. Průběžná integrace s mam_build jej spustí a při neúspěšném testu shodí build.Záměna služeb přes kontext. Každý test dostane vlastní $ a všechno, po čem komponenta sáhne přes this.$.X, se zamění přiřazením testovací náhrady do toho $. To je ten důvod psát this.$.$mol_fetch a ne $mol_fetch: to první jde nahradit, to druhé ne.Mockovaný čas. Časovače vytvořené přes kontext netikají samy od sebe; $mol_after_mock_warp() spustí to, co je ve frontě.Skutečný DOM, když je potřeba. Bundl pro Node nese jsdom, takže dom_node() i querySelectorAll fungují ve stejném testovacím souboru.
Vezměte seznam úkolů z Kuchařky: řetězec draft?, seznam items, akci add a akci delete. Jeho test žije v 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}Pár věcí, kterých si všimnout:Upravit tuto stránku na GitHubuBylo to užitečné?AnoNePředchozíVykreslováníDalšíNasazeníNa této stránceScénář přes metody pohleduMockování službyČasPřes DOMCo test v Node nepokryjePraktické poznámkyDáleType to search the documentation.