test and eslint
ts-jest#
توسط این پکیج می توان برای کامپوننت های react ک با type script نوشته شده اند، تست نوشت ک به صورت زیر می توان در اپلیکیشن reactیی خود آن را نصب کرد:
سپس توسط کد زیر می توان فایل کانفیگ آن را به پروژه اضافه کرد:
حال باید به package.json کد زیر را اضافه کنیم:
برای ساخت فایل تست برای هر کامپوننت باید بعد از نام آن از کلمه spec یا test استفاده کنیم، مثل : sum.spec.ts یا sum.test.ts
سپس برای استفاده از متد های از پیش ساخته شده برای تست در react می توان از پکیج react testing library استفاده کنیم:
حال برای اینکه کامپوننت های react ک همراه با spec.tsx.* هستند نیاز است تا یک فایل به نام tsconfig.jest.json بسازیم و کد های زیر را در آن قرار دهیم:
سپس نیاز است ک فایل jest.config.ts را نیز تغییر دهیم:
برای اینکه توابعی مانند 2 تابع زیر را بتوان در تست ها استفاده کرد باید یک کانفیگ جدید را ب پروژه اضافه کرد، در واقع توسط این کانفیگ یک سری از کدهای تست ما قبل از اجرا شدن مابقی کد ها اجرا می شود و به ما اجازه این را میدهد ک از توابع زیر استفاده کنیم:
از آدرس زیر باید کانفیگ آن را برداریم و به jest.config.js اضافه کنیم:
حال باید یک فایل دیگر ب نام jest.setup.ts را مسیر src یا مسیر test اضافه کنیم:
eslint#
همچنین می توان از eslint نیز همراه با jest استفاده کرد ک خیلی در جلوگیری از باگ ها کمک می کند.
برای اینکار باید ابتدا eslint خود پروژه را ( در صورت وجود ) نامش را عوض کنیم ( تا از محتوای آن در eslint جدید استفاده کنیم ) و سپس از دستور زیر استفاده میکنیم:
حال در فایل جدید از کد های زیر استفاده میکنیم:
✨ ممکن است بعد نصب eslint و jest در react به اروری مبنی بر اینکه ورژن این 2 پکیج بالا تر از پکیج های نصب شده در این اپلیکیشن می باشد ک در آن صورت باید package-lock.json و yarn.lock و node_modules را حذف کنیم و هم چنین از package.json نیز باید نام این 2 پکیج را نیز حذف کنیم و دوباره npm i یا yarn بزنیم.
همچنین چون ما فولدر اصلی pages در next را به src جابه جا کردیم، باید توسط دستور زیر ( فقط برای next ) مسیری ک eslint چک میکند را تغییر دهیم ( package.json ):
حال باید پلاگین هایی ک نیاز داریم برای متصل کردن eslint و jest را نصب و آن را به فایل .eslintrc.js در قسمت extends، اضافه کنیم:
سپس باید پلاگینی ک مربوط به testing library می باشد را برای eslint نصب کنیم:
lint-staged#
گاهی اوقات ما نیاز داریم ک کد های ما از نظر ساختاری، تمیز بشوند و اگر اروری دارد، هنگام کامیت کردن، ب ما نشان دهد، یعنی یک script قبل از commit اجرا می شود و مواردی ک ما ب آن گفته ایم را برای ما انجام می دهد
این پکیج، 2 پیش نیاز دارد و باید آن ها را نیز نصب کنیم:
حال باید در فولدری ک نام آن husky. می باشد، در فایل pre-commit، کامند اصلی آن را به کامند زیر تغییر بدهیم:
حال باید این دستور را نیز در package.json نیز قرار دهیم تا هنگام اجرا ب مشکل بر نخورد:
همچنین اگر از ts و tsx بجای js و jsx استفاده میکنیم، باید در قسمت انتهایی package.json، تغییراتی اعمال کنیم:
coverage#
حال برای اینکه تست در حالت ci را نیز اضافه کنیم باید از کد های زیر در jest.config.js استفاده کنیم
حال برای اینکه این قسمت هم ب درستی کار کند، باید در package.json دستور زیر را اضافه کنیم:
🎉🎉🎉 حتما باید تمام فایل ها ( اگر از ts استفاده می شود ) حتما با پسوند های ts و tsx باشد، حتی eslint.، babel.config و ...، زیرا ب ما ارور parserOption میدهد ک مربوط ب مغایرت داشتن فرمت فایل ها می باشد.
🎉 تغییرات زیر نیز باید اعمال شود روی فایل های مورد نظر یا اگر وجود ندارد، باید ساخته شوند:
tsconfig.json
tsconfig.eslint.json
github action ( optional )#
حال میتوان وارد repo خود شویم و در قسمت actions یک workflow جدید برای node بسازیم
سپس کد های درون آن را به کد های زیر تغییر دهیم:
حال میتوان کد هایمان را به repo مورد نظرمان push کنیم.