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
کنیم.