A set of convenient utilities to make Angular testing with Jasmine and Karma simpler.
- Angular version compatibility
- Installation
assertThat()
delayBy()
extractTextContent()
findElementBySelector()
fireEvent()
getElementBySelector()
- 16+
npm
npm i -S @lazycuh/angular-testing-kit
pnpm
pnpm i -S @lazycuh/angular-testing-kit
yarn
yarn add @lazycuh/angular-testing-kit
This assertion function accepts either a string or a DebugElement
, it returns an assertion object that can be used to check for different conditions. The returned assertion object has the following methods:
Will pass if no element with the provided class name exists in document.body
.
assertThat('.hello-world').doesNotExist();
Will pass if an element with the provided class name exists in document.body
.
assertThat('.hello-world').exists();
Will pass if an element with the provided class name has the provided inner HTML string.
assertThat('.hello-world').hasInnerHtml('<span>Hello World</span>');
Will pass if an element with the provided class name has the provided string as its text content.
assertThat('.hello-world').hasTextContent('Hello World');
Will pass if an element with the provided class name whose text content matches the provided value. This function also accepts a RegExp
to perform custom matching.
assertThat('.hello-world').hasTextContentMatching(/hello\s+world/i);
Returns a promise that will resolve after the provided milliseconds. Useful for when you need to wait for some asynchronous process to complete before proceeding.
await delayBy(500);
Returns the text content of the element matched by the provided selector. It will throw an error if the matched element
is a document
or doctype
node because these nodes' textContent
will be null
. If no element is matched, then an error will be thrown.
expect(extractTextContent('.hello-world')).toEqual('Hello World');
Returns the element matched by the provided selector. If nothing is matched, null
is returned.
expect(findElementBySelector('.hello-world')).not.toBeNull();
Dispatch the given eventType
DOM event on the target element matched by the provided selector.
The selector argument accepts 3 different types of value:
- If it's a string, then it's treated as an HTML selector by which to find the target element to fire the event on. If no element is found for the provided selector, then an error will be thrown.
- If it's an
EventTarget
such asElement
orwindow
, then the event is fired directly on it. - If it's a
DebugElement
, then its native element will be dispatched the event on.
fireEvent('.hello-world', 'keyup', { key: 'Enter' });
Returns the element matched by the provided selector. If nothing is matched, an error is thrown.
expect(() => getElementBySelector('.hello-world')).not.toThrow();