单元测试 angular 2(ionic 2) 自定义指令
unit testing angular 2(ionic 2) custom directive
我在我的离子应用程序中为文本屏蔽创建了一个自定义指令。该指令用于 phone 数字的输入文本屏蔽。
它使用 ngControl
获取和设置输入字段的值。
@HostListener('keyup', ['$event'])
onKeyUp($event: any) {
var inputValue = this.ngControl.control.value;
this.ngControl.control.setValue(this.getMaskedValue(inputValue));
}
}
我尝试了很多方法来测试它,但我无法设置值。我能够通过导入 FormsModule
并绑定输入来获得 ngControl
。
但我仍然无法获得 this.ngControl.control.value
的值。当我在输入字段中输入时,它工作正常但无法定义测试用例。
这里是测试用例片段
it('should have masked value', () => {
fixture.detectChanges();
let element = inputEl.nativeElement;
element.value = '999';
inputEl.nativeElement.dispatchEvent(new Event('keyup', key));
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(element.value).toEqual('(999)');
});
}
这是我的测试组件:
@Component({
template: `<input type="text" [(ngModel)]="val" customDirective="(999)-999-9999">`
})
class TestCustomDirectiveComponent {
constructor(public formBuilder: FormBuilder) {}
val = '';
}
我想写一个这样的测试用例expect(element.value).toEqual('(999)-999-9999
。我该如何测试?
简单地覆盖对象。
it('should have masked value', () => {
fixture.detectChanges();
let element = inputEl.nativeElement;
Object.defineProperty(
directive.ngControl.control,
'value',
{ writable: true, value: 'your value' }
);
directive.onKeyUp(null);
expect(element.value).toEqual('(999)');
}
(我假设您通过变量 directive
引用了您的指令)
我在我的离子应用程序中为文本屏蔽创建了一个自定义指令。该指令用于 phone 数字的输入文本屏蔽。
它使用 ngControl
获取和设置输入字段的值。
@HostListener('keyup', ['$event'])
onKeyUp($event: any) {
var inputValue = this.ngControl.control.value;
this.ngControl.control.setValue(this.getMaskedValue(inputValue));
}
}
我尝试了很多方法来测试它,但我无法设置值。我能够通过导入 FormsModule
并绑定输入来获得 ngControl
。
但我仍然无法获得 this.ngControl.control.value
的值。当我在输入字段中输入时,它工作正常但无法定义测试用例。
这里是测试用例片段
it('should have masked value', () => {
fixture.detectChanges();
let element = inputEl.nativeElement;
element.value = '999';
inputEl.nativeElement.dispatchEvent(new Event('keyup', key));
fixture.detectChanges();
fixture.whenStable().then(() => {
expect(element.value).toEqual('(999)');
});
}
这是我的测试组件:
@Component({
template: `<input type="text" [(ngModel)]="val" customDirective="(999)-999-9999">`
})
class TestCustomDirectiveComponent {
constructor(public formBuilder: FormBuilder) {}
val = '';
}
我想写一个这样的测试用例expect(element.value).toEqual('(999)-999-9999
。我该如何测试?
简单地覆盖对象。
it('should have masked value', () => {
fixture.detectChanges();
let element = inputEl.nativeElement;
Object.defineProperty(
directive.ngControl.control,
'value',
{ writable: true, value: 'your value' }
);
directive.onKeyUp(null);
expect(element.value).toEqual('(999)');
}
(我假设您通过变量 directive
引用了您的指令)