تست واحد JavaScript

نوشتن تست واحد به اندازهٔ خود کدنویسی مهم است: این کار کمک می‌کند مطمئن شویم که کد طبق یک مشخصات معین نوشته شده و با تکامل آن همچنان درست باقی می‌ماند.

چارچوب تست

تست کد با یک چارچوب تست آغاز می‌شود. این چارچوب سطحی از انتزاع را فراهم می‌کند که نوشتن تست‌ها را به‌صورت ساده و کارآمد ممکن می‌سازد. همچنین مجموعه‌ای از ابزارها برای اجرای تست‌ها، انجام assertion و گزارش نتایج ارائه می‌دهد.

توسعه‌دهندگان Odoo از یک چارچوب تست داخلی به نام HOOT استفاده می‌کنند. دلیل اصلی استفاده از یک چارچوب سفارشی این است که به ما اجازه می‌دهد بر اساس نیازهایمان آن را گسترش دهیم (سیستم برچسب‌ها، شبیه‌سازی اشیای سراسری و غیره).

بر روی این چارچوب، مجموعه‌ای از ابزارها برای کمک به ما در نوشتن تست‌ها برای وب‌کلاینت (web_test_helpers) و یک سرور mock برای شبیه‌سازی سمت سرور (mock_server) ساخته‌ایم.

می‌توانید پیوندهای مرجع هر یک از این بخش‌ها را در ادامه، همراه با بخشی پر از مثال‌ها و بهترین شیوه‌ها برای نوشتن تست پیدا کنید.

راه‌اندازی

پیش از یادگیری نحوهٔ نوشتن تست‌ها، بهتر است از مبانی شروع کنید. مراحل زیر اطمینان حاصل می‌کند که فایل‌های تست شما به‌درستی توسط test runner شناسایی می‌شوند.

توجه داشته باشید که در افزونه‌های موجود، اغلب این مراحل قابل صرف‌نظر کردن هستند چرا که احتمالاً ساختار پوشه و asset bundleهای مناسب از قبل تنظیم شده‌اند.

  1. نوشتن فایل‌ها در مکان درست:

    همهٔ فایل‌های تست JavaScript باید زیر پوشهٔ /static/tests افزونهٔ مربوطه قرار گیرند (مثلاً /web/static/tests/env.test.js).

  2. استفاده از نام درست:

    فایل‌های تست باید با .test.js پایان یابند. این تنها یک قرارداد نیست، بلکه یک الزام برای شناسایی فایل‌های تست توسط runner است. سایر فایل‌های JavaScript یا به‌عنوان کد production تفسیر می‌شوند (یعنی کدی که باید تست شود) یا به‌عنوان فایل‌های کمکی تست (مانند web_test_helpers).

    توجه

    لازم به ذکر است که برای فایل‌های .hoot.js یک استثنا وجود دارد که به‌عنوان فایل تست محسوب نمی‌شوند، بلکه به‌عنوان ماژول‌های سراسری برای کل اجرای تست در نظر گرفته می‌شوند، در حالی که سایر ماژول‌های JavaScript برای هر test suite دوباره ساخته می‌شوند. از آنجا که نمونهٔ یکسانی از این ماژول‌ها برای کل اجرای تست در حال اجرا خواهد بود، آنها از محدودیت‌های سختی پیروی می‌کنند، مانند importهای محدود یا تکنیک‌های پیشرفتهٔ مدیریت حافظه برای اطمینان از اینکه هیچ اثر جانبی بر تست‌ها تأثیر نمی‌گذارد.

  3. فراخوانی فایل‌ها در bundle درست:

    فایل‌های تست، که در پوشهٔ درست افزوده شده‌اند، باید در bundle web.assets_unit_tests گنجانده شوند. برای سهولت استفاده، این کار را می‌توان با glob syntax انجام داد تا تمام فایل‌های تست و کمک‌تست import شوند:

    # Unit test files
    'web.assets_unit_tests': [
        'my_addon/static/tests/**/*',
    ],
    
  4. رفتن به URL درست:

    برای اجرای تست‌ها می‌توانید به URL /web/tests بروید.

    نکته

    این صفحه از طریق Debug menu ↤ Run Unit Tests قابل دسترسی است.

نوشتن تست‌ها

پس از ایجاد و گنجاندن فایل‌های تست، نوبت به نوشتن تست‌ها می‌رسد. می‌توانید برای آشنایی با چارچوب تست به بخش‌های مستندات زیر مراجعه کنید.