آنلاین

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جزئیات
waitForAsynctaskهای async را track می‌کند و testها را فقط زمانی کامل می‌کند که دیگر هیچ microtask یا macrotaskای در test zone باقی نمانده باشد.
fakeAsyncbody یک 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 شود و از خطا جلوگیری شود.