create-spies-group.d.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import {Spy} from './create-spy.js';
  2. import {MethodKey, AnyCallable} from './types.js';
  3. /**
  4. * Представляет группу шпионов, позволяющую
  5. * управлять ими коллективно.
  6. */
  7. export declare class SpiesGroup {
  8. /**
  9. * Внутренний массив, хранящий все шпионы,
  10. * созданные в этой группе. Не предназначен
  11. * для прямого доступа.
  12. */
  13. spies: Spy<any>[];
  14. /**
  15. * Создает шпиона для отдельной функции
  16. * и добавляет его в группу.
  17. *
  18. * @param target
  19. * @param customImpl
  20. */
  21. on<TFunc extends AnyCallable>(
  22. target: TFunc,
  23. customImpl?: TFunc,
  24. ): Spy<TFunc>;
  25. /**
  26. * Создает шпиона для метода объекта, добавляет
  27. * его в группу и заменяет оригинальный метод
  28. * объекта шпионом.
  29. *
  30. * @param target
  31. * @param methodName
  32. * @param customImpl
  33. */
  34. on<TObj extends object, K extends MethodKey<TObj>>(
  35. target: TObj,
  36. methodName: K,
  37. customImpl?: TObj[K],
  38. ): Spy<Extract<TObj[K], AnyCallable>>;
  39. /**
  40. * Восстановление всех оригинальных методов объектов,
  41. * для которых были созданы шпионы в этой группе,
  42. * и сброс истории вызовов для всех шпионов в группе.
  43. * Очищает внутренний список шпионов.
  44. */
  45. restore(): this;
  46. }
  47. /**
  48. * Фабричная функция для создания
  49. * нового экземпляра `SpiesGroup`.
  50. */
  51. export function createSpiesGroup(): SpiesGroup;