Zone.js Testing Utilities
این راهنما utilityهای testing را توضیح میدهد که عمدتاً برای مدیریت و کنترل taskهای async در unit testها استفاده میشوند. این utilityها در اصل utilityهای mock clock مخصوص Zone.js هستند و بهویژه برای کنترل جریان operationهای asynchronous داخل testها کاربرد دارند.
برای utilityهای عمومی testing در Angular، از جمله TestBed و ComponentFixture، راهنمای Testing Utility APIs را ببینید.
این خلاصهای از functionهای مخصوص Zone.js است:
| Function | جزئیات |
|---|---|
waitForAsync | taskهای async را track میکند و testها را فقط زمانی کامل میکند که دیگر هیچ microtask یا macrotaskای در test zone باقی نمانده باشد. |
fakeAsync | body یک test \(it\) را داخل یک fakeAsync test zone مخصوص اجرا میکند و یک سبک کدنویسی با flow خطی را ممکن میسازد. |
tick | گذر زمان و کامل شدن activityهای asynchronous pending را با flush کردن queueهای timer و micro-task داخل fakeAsync test zone شبیهسازی میکند. خواننده کنجکاو و پیگیر شاید از این blog post طولانی لذت ببرد: "Tasks, microtasks, queues and schedules". یک argument اختیاری میپذیرد که clock مجازی را به اندازه تعداد millisecond مشخصشده جلو میبرد و activityهای asynchronous زمانبندیشده در آن بازه را پاک میکند. |
discardPeriodicTasks | هر task دورهای، مثل setInterval، را که داخل Zone مربوط به fakeAsync ایجاد شده باشد discard میکند. |
flushMicrotasks | وقتی یک test مربوط به fakeAsync() با micro-taskهای pending مثل promiseهای resolveنشده تمام شود، test با یک پیام خطای روشن fail میشود. به طور کلی، test باید منتظر تمام شدن micro-taskها بماند. وقتی microtaskهای pending مورد انتظار هستند، flushMicrotasks را فراخوانی کنید تا queue مربوط به micro-task flush شود و از خطا جلوگیری شود. |