smalljs$molجستجو⌘ Kمستنداتزمین بازیمقایسهاکوسیستمدربارهFA
تست‌نویسیGetting Startedمعرفیمدل ذهنیشروع به کاراز تایپ‌اسکریپت به 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 جی‌اس‌دام را همراه دارد، پس 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.