کتاب Typescript: تست نویسی Test-Driven Development (TDD) با فرمت AZW3 برای کتابخوان کیندل و فرمت EPUB
TypeScript: آموزش تستنویسی TDD | ارتقای مهارت برنامهنویسی شما TypeScript: آموزش تستنویسی TDD - تضمین کیفیت کد و ارتقای مهارت برنامهنویسی معرفی دوره آیا میخواهید کدهایی بنویسید که نه تنها کار میک...
🎓 دوره آموزشی جامع
📚 اطلاعات دوره
عنوان دوره: دوره Typescript: تست نویسی Test-Driven Development (TDD)
موضوع کلی: برنامه نویسی
موضوع میانی: تایپ اسکریپت (TypeScript)
📋 سرفصلهای دوره
- 1. مقدمهای بر Test-Driven Development (TDD)
- 2. چرا TDD؟ مزایا و فلسفه آن
- 3. مقایسه TDD با رویکردهای سنتی تستنویسی
- 4. آشنایی با چرخه TDD: قرمز-سبز-بازآفرینی (Red-Green-Refactor)
- 5. راهاندازی محیط توسعه: Node.js, npm/yarn
- 6. ایجاد یک پروژه جدید تایپاسکریپت (tsconfig.json)
- 7. نصب و پیکربندی Jest به عنوان فریمورک تست
- 8. ادغام Jest با تایپاسکریپت با استفاده از ts-jest
- 9. ساختار پوشهبندی پروژه برای تستها (src و test)
- 10. نوشتن اولین فایل تست: anatomy of a .test.ts file
- 11. اجرای اولین تست (که هنوز خالی است)
- 12. آشنایی با بلوکهای describe و it (یا test)
- 13. مفهوم Assertion و تابع expect در Jest
- 14. اولین چرخه کامل TDD: نوشتن یک تست ناموفق (Red)
- 15. معرفی Matcherها: `toBe` برای مقادیر اولیه
- 16. نوشتن حداقل کد برای پاس شدن تست (Green)
- 17. مفهوم بازآفرینی کد (Refactor) و اهمیت آن
- 18. بازآفرینی کد تابع و تست بدون تغییر در رفتار
- 19. مقایسه `toBe` و `toEqual` برای اشیاء و آرایهها
- 20. تست کردن مقادیر Truthiness و Falsiness
- 21. تست کردن اعداد: `toBeGreaterThan`, `toBeLessThan`
- 22. تست کردن رشتهها با عبارات باقاعده (Regex)
- 23. تست کردن آرایهها و مقادیر موجود در آنها (`toContain`)
- 24. گروهبندی تستهای مرتبط با `describe`
- 25. اجرای کدهای آمادهسازی قبل و بعد از هر تست (`beforeEach`, `afterEach`)
- 26. اجرای کدهای آمادهسازی یکبار برای کل مجموعه تست (`beforeAll`, `afterAll`)
- 27. TDD برای توابع Pure: مثالهای عملی
- 28. تست توابع با ورودیها و خروجیهای مختلف (اعداد، رشتهها، بولینها)
- 29. TDD برای کار با اشیاء (Objects) در تایپاسکریپت
- 30. TDD برای کار با آرایهها (Arrays) و متدهای آن
- 31. استفاده از اینترفیسها (Interfaces) و تایپها (Types) در تستها
- 32. تست کردن Union Types و Optional Parameters
- 33. مدیریت و تست خطاها (Errors) با `toThrow`
- 34. تست کردن پیامهای خطای خاص
- 35. مقدمهای بر کد ناهمگام (Asynchronous) در تایپاسکریپت
- 36. تست کردن Promiseها
- 37. استفاده از `async/await` در تستها برای خوانایی بهتر
- 38. تست کدهای `async` که با موفقیت `resolve` میشوند
- 39. تست کدهای `async` که با خطا `reject` میشوند
- 40. مدیریت Timeout در تستهای ناهمگام
- 41. مفهوم وابستگیها (Dependencies) و اثرات جانبی (Side Effects)
- 42. چرا به Mocking نیاز داریم؟ ایزوله کردن واحد تحت تست
- 43. آشنایی با Mock Functions در Jest (`jest.fn`)
- 44. تست کردن تعداد دفعات فراخوانی یک Mock (`toHaveBeenCalledTimes`)
- 45. تست کردن آرگومانهای پاس داده شده به یک Mock (`toHaveBeenCalledWith`)
- 46. شبیهسازی مقادیر بازگشتی با `mockReturnValue`
- 47. شبیهسازی Promiseهای موفق با `mockResolvedValue`
- 48. شبیهسازی Promiseهای ناموفق با `mockRejectedValue`
- 49. مقدمهای بر Mocking Modules با `jest.mock`
- 50. Mock کردن ماژولهای داخلی پروژه
- 51. Mock کردن کتابخانههای خارجی (third-party libraries)
- 52. مفهوم جاسوسی (Spying) با `jest.spyOn`
- 53. کاربرد `spyOn` برای نظارت بر متدهای یک شیء بدون تغییر رفتار آن
- 54. بازگرداندن پیادهسازی اصلی با `mockRestore`
- 55. TDD برای کلاسها (Classes) در تایپاسکریپت
- 56. تست کردن Constructor و Propertyهای یک کلاس
- 57. تست کردن متدهای Public یک کلاس
- 58. بحثی در مورد تست متدهای Private
- 59. Mock کردن وابستگیهای یک کلاس در Constructor
- 60. تفاوت بین Mock, Stub و Spy
- 61. TDD با تایپهای ژنریک (Generics)
- 62. تست یک تابع ژنریک
- 63. تست یک کلاس ژنریک (مانند Stack یا Queue)
- 64. معرفی Snapshot Testing: چیستی و کاربردها
- 65. نوشتن و اجرای اولین Snapshot Test
- 66. استراتژیهای بهروزرسانی Snapshotها
- 67. چه زمانی از Snapshot Testing استفاده کنیم (و نکنیم)
- 68. تست کردن Type Guards سفارشی در تایپاسکریپت
- 69. معرفی مفهوم Code Coverage
- 70. تولید و تحلیل گزارش Code Coverage
- 71. معنای معیارهای پوشش کد: Statement, Branch, Function, Line
- 72. افسانه پوشش کد ۱۰۰٪: اهداف واقعگرایانه
- 73. تستهای پارامتری (Parametrized Tests) با `test.each`
- 74. TDD برای توسعه یک ماژول کاربردی (Utility Module)
- 75. الگوی Arrange-Act-Assert (AAA) برای ساختاردهی تستها
- 76. نوشتن نامهای گویا و توصیفی برای تستها
- 77. TDD در یک سناریو واقعی: ساخت یک اعتبارسنج (Validator)
- 78. مقدمهای بر تست لایههای مختلف یک اپلیکیشن (Controller, Service, Repository)
- 79. TDD برای لایه سرویس (Service Layer)
- 80. مفهوم Inversion of Control و Dependency Injection در تست
- 81. Mock کردن لایه Repository برای تست واحد لایه Service
- 82. تفاوت تست واحد (Unit), یکپارچهسازی (Integration) و End-to-End (E2E)
- 83. نوشتن یک تست یکپارچهسازی ساده
- 84. معرفی Property-Based Testing
- 85. نوشتن یک Matcher سفارشی ساده با `expect.extend`
- 86. TDD برای کار با تاریخ و زمان (Mocking `Date`)
- 87. TDD برای توابعی که با فایل سیستم کار میکنند
- 88. الگوهای طراحی (Design Patterns) مناسب برای کد قابل تست
- 89. بازآفرینی به سمت کد تمیز (Clean Code)
- 90. بازآفرینی تستها: چگونه تستهای بهتری بنویسیم
- 91. اشتباهات رایج در تستنویسی و نحوه اجتناب از آنها
- 92. اجتناب از منطق (if/else, loops) در تستها
- 93. حفظ استقلال و ایزوله بودن تستها از یکدیگر
- 94. سریع نگه داشتن مجموعه تستها
- 95. دیباگ کردن تستها در VS Code و ابزارهای دیگر
- 96. استفاده از Watch Mode برای افزایش سرعت چرخه TDD
- 97. اجرای تنها یک تست یا یک مجموعه تست خاص
- 98. ادغام تستها با Git Hooks (Husky & lint-staged)
- 99. مقدمهای بر Continuous Integration (CI)
- 100. راهاندازی یک پایپلاین CI ساده با GitHub Actions برای اجرای خودکار تستها
تگها:
JavaScript
Programming
TDD
Test-Driven Development
TypeScript
آموزش TypeScript
برنامه نویسی
بهترین روش های برنامه نویسی
تایپ اسکریپت
تست نویسی
توسعه دهنده
توسعه نرم افزار
کدنویسی
کیفیت کد
یادگیری TypeScript
نظرات
هنوز نظری ثبت نشده است.
وارد شوید تا نظر ثبت کنید.