smalljs$molSzukaj⌘ KDokumentacjaPlaygroundPorównanieEkosystemO projekciePL
TestowanieGetting StartedWprowadzenieModel mentalnyPierwsze krokiZ TypeScriptu do view.treeStruktura projektuNarzędziaEssentialsInstalacjaWidokiStan i reaktywnośćRoutingRenderowanieTestowanieWdrożenieRozwiązywanie problemówDataPobieranie danychSchematy danychGiper BazaMorePrezentacjaZ React, Vue i SvelteZbiór przepisówAdvancedWtyczkiMetadane modułuOfflineWidoki-duchyAboutFAQZespółWydaniaAPI$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

Testowanie

Widok $mol jest funkcją swojego stanu, a to zmienia postać testu. Scenariusz użytkownika zapisuje się jako wywołania własnych metod widoku: ustaw wersję roboczą, uruchom akcję, przeczytaj to, co zobaczyłby użytkownik.1app.draft( 'Milk' )2app.add()3$mol_assert_equal( app.item_title( 0 ), 'Milk' )Bez selektorów, bez przeglądarki, bez Playwrighta czy Cypressa, bez czekania na cokolwiek. Ten sam plik daje ci też:Szybkość. Testy biegną w Node w milisekundach; tysiąc z nich zajmuje jakąś minutę. node my/hello/-/node.test.js uruchamia te dla jednego modułu.Zero konfiguracji. hello.test.ts obok komponentu jest podchwytywany przez builder i kompilowany do -/node.test.js. Ciągła integracja z mam_build uruchamia go i wywala build, gdy test nie przejdzie.Podmiana serwisów przez kontekst. Każdy test dostaje własne $, a wszystko, po co komponent sięga przez this.$.X, podmienia się, przypisując do tego $ atrapę. To właśnie powód, żeby pisać this.$.$mol_fetch, a nie $mol_fetch: pierwsze da się podmienić, drugie nie.Zamockowany czas. Timery tworzone przez kontekst nie tykają same z siebie; $mol_after_mock_warp() wykonuje to, co stoi w kolejce.Prawdziwy DOM, gdy jest potrzebny. Bundle Node niesie jsdom, więc dom_node() i querySelectorAll działają w tym samym pliku testowym.

Scenariusz przez metody widoku

Weź listę zadań ze Zbioru przepisów: ciąg draft?, lista items, akcja add i akcja delete. Jej test mieszka w 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}
Edytuj tę stronę na GitHubieCzy to było pomocne?TakNiePoprzedniaRenderowanieNastępnaWdrożenie
Na tej stronieScenariusz przez metody widokuMockowanie serwisuCzasPrzez DOMCzego test w Node nie obejmujeUwagi praktyczneDalej
Type to search the documentation.