Spec-Zone.ru › Angular

ComponentHarness

Базовый класс для тестовых оболочек компонентов, от которого должны наследоваться все авторы таких оболочек. Этот базовый класс предоставляет основные возможности для поиска элементов и вложенных тестовых оболочек компонентов.

API

abstract class ComponentHarness {
  constructor(locatorFactory: LocatorFactory): ComponentHarness;
  host(): Promise<TestElement>;
  protected documentRootLocatorFactory(): LocatorFactory;
  protected locatorFor<T extends (HarnessQuery<any> | string)[]>(...queries: T): () => Promise<LocatorFnResult<T>>;
  protected locatorForOptional<T extends (HarnessQuery<any> | string)[]>(...queries: T): () => Promise<LocatorFnResult<T> | null>;
  protected locatorForAll<T extends (HarnessQuery<any> | string)[]>(...queries: T): () => Promise<LocatorFnResult<T>[]>;
  protected forceStabilize(): Promise<void>;
  protected waitForTasksOutsideAngular(): Promise<void>;
}

constructor

ComponentHarness
@paramlocatorFactoryLocatorFactory
@returnsComponentHarness

host

Promise<TestElement>

Возвращает Promise для TestElement, представляющего корневой элемент компонента.

@returnsPromise<TestElement>

documentRootLocatorFactory

LocatorFactory

Возвращает LocatorFactory для корневого элемента документа. Эту фабрику можно использовать для создания локаторов элементов, которые компонент создает вне собственного корневого элемента (например, добавляя их в document.body).

@returnsLocatorFactory

locatorFor

() => Promise<LocatorFnResult<T>>

Создает асинхронную функцию-локатор, с помощью которой можно найти экземпляр ComponentHarness или элемент внутри корневого элемента этой ComponentHarness.

Например, для следующей DOM-структуры и при условии, что DivHarness.hostSelector — это 'div'

<div id="d1"></div><div id="d2"></div>

ожидается следующее:

await ch.locatorFor(DivHarness, 'div')() // Gets a `DivHarness` instance for #d1
await ch.locatorFor('div', DivHarness)() // Gets a `TestElement` instance for #d1
await ch.locatorFor('span')()            // Throws because the `Promise` rejects
@paramqueriesT

Список запросов, определяющих, какие тестовые оболочки и элементы следует искать:

  • string выполняет поиск элементов, соответствующих CSS-селектору, заданному строкой.
  • Конструктор ComponentHarness выполняет поиск экземпляров ComponentHarness, соответствующих заданному классу.
  • HarnessPredicate выполняет поиск экземпляров ComponentHarness, соответствующих заданному предикату.
@returns() => Promise<LocatorFnResult<T>>

locatorForOptional

() => Promise<LocatorFnResult<T> | null>

Создает асинхронную функцию-локатор, с помощью которой можно найти экземпляр ComponentHarness или элемент внутри корневого элемента этой ComponentHarness.

Например, для следующей DOM-структуры и при условии, что DivHarness.hostSelector — это 'div'

<div id="d1"></div><div id="d2"></div>

ожидается следующее:

await ch.locatorForOptional(DivHarness, 'div')() // Gets a `DivHarness` instance for #d1
await ch.locatorForOptional('div', DivHarness)() // Gets a `TestElement` instance for #d1
await ch.locatorForOptional('span')()            // Gets `null`
@paramqueriesT

Список запросов, определяющих, какие тестовые оболочки и элементы следует искать:

  • string выполняет поиск элементов, соответствующих CSS-селектору, заданному строкой.
  • Конструктор ComponentHarness выполняет поиск экземпляров ComponentHarness, соответствующих заданному классу.
  • HarnessPredicate выполняет поиск экземпляров ComponentHarness, соответствующих заданному предикату.
@returns() => Promise<LocatorFnResult<T> | null>

locatorForAll

() => Promise<LocatorFnResult<T>[]>

Создает асинхронную функцию-локатор, с помощью которой можно найти экземпляры ComponentHarness или элементы внутри корневого элемента этой ComponentHarness.

Например, для следующей DOM-структуры и при условии, что DivHarness.hostSelector — это 'div', а IdIsD1Harness.hostSelector — это '#d1'

<div id="d1"></div><div id="d2"></div>

ожидается следующее:

// Gets [DivHarness for #d1, TestElement for #d1, DivHarness for #d2, TestElement for #d2]
await ch.locatorForAll(DivHarness, 'div')()
// Gets [TestElement for #d1, TestElement for #d2]
await ch.locatorForAll('div', '#d1')()
// Gets [DivHarness for #d1, IdIsD1Harness for #d1, DivHarness for #d2]
await ch.locatorForAll(DivHarness, IdIsD1Harness)()
// Gets []
await ch.locatorForAll('span')()
@paramqueriesT

Список запросов, определяющих, какие тестовые оболочки и элементы следует искать:

  • string выполняет поиск элементов, соответствующих CSS-селектору, заданному строкой.
  • Конструктор ComponentHarness выполняет поиск экземпляров ComponentHarness, соответствующих заданному классу.
  • HarnessPredicate выполняет поиск экземпляров ComponentHarness, соответствующих заданному предикату.
@returns() => Promise<LocatorFnResult<T>[]>

forceStabilize

Promise<void>

Запускает обнаружение изменений и выполняет асинхронные задачи в зоне Angular. В большинстве случаев вызывать этот метод вручную не требуется. Однако в некоторых особых случаях он может понадобиться, чтобы полностью обработать события анимации.

@returnsPromise<void>

waitForTasksOutsideAngular

Promise<void>

Ожидает завершения всех запланированных или выполняющихся асинхронных задач. Это позволяет авторам тестовых оболочек дожидаться выполнения асинхронных задач вне зоны Angular.

@returnsPromise<void>

Super-powered by Google ©2010–2025.
Code licensed under an MIT-style License. Documentation licensed under CC BY 4.0.
https://angular.dev/api/cdk/testing/ComponentHarness

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API