javascript / intermediate
Snippet
Unit-Testing reaktiver Formular-Validatoren bei fehlerhaften Eingaben
Benutzerdefinierte synchrone Formularvalidatoren sind reine Funktionen höherer Ordnung, die Konfigurationsparameter annehmen und eine Validierungsfunktion zurückgeben. Isolierte Unit-Tests stellen sicher, dass ungültige Eingaben präzise Fehlerobjekte erzeugen und valide Werte korrekt null zurückgeben.
snippet.js
javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
import { FormControl, ValidationErrors, ValidatorFn } from '@angular/forms';export function forbiddenKeywordValidator(forbiddenWord: RegExp): ValidatorFn {return (control: FormControl): ValidationErrors | null => {if (!control.value || typeof control.value !== 'string') {return null;}const isForbidden = forbiddenWord.test(control.value);return isForbidden ? { forbiddenKeyword: { value: control.value } } : null;};}describe('forbiddenKeywordValidator', () => {const validator = forbiddenKeywordValidator(/admin/i);it('should return null when control contains valid text', () => {const control = new FormControl('johndoe');expect(validator(control)).toBeNull();});it('should return a validation error object when forbidden keyword is present', () => {const control = new FormControl('SuperAdmin123');const result = validator(control);expect(result).toEqual({forbiddenKeyword: { value: 'SuperAdmin123' }});});});
angular
Erklärung
1
export function forbiddenKeywordValidator(forbiddenWord: RegExp): ValidatorFn {
Definiert eine Factory-Funktion, die eine mit einem regulären Ausdruck konfigurierte ValidatorFn liefert.
2
return isForbidden ? { forbiddenKeyword: { value: control.value } } : null;
Gibt bei einem Treffer ein ValidationErrors-Objekt zurück, andernfalls null bei erfolgreicher Validierung.
3
describe('forbiddenKeywordValidator', () => {
Gruppiert Unit-Tests für die Testsuite der Validatorfunktion.
4
const control = new FormControl('SuperAdmin123');
Erstellt ein leichtgewichtiges FormControl mit Testdaten ohne vollständiges DOM-TestBed-Setup.
5
expect(result).toEqual({ forbiddenKeyword: { value: 'SuperAdmin123' } });
Überprüft, ob der Validator bei ungültiger Eingabe die exakte erwartete Fehlerstruktur erzeugt.