首页 > 代码库 > [Angular] Test component template
[Angular] Test component template
Component:
import { Component, Input, ChangeDetectionStrategy, EventEmitter, Output } from ‘@angular/core‘;@Component({ selector: ‘stock-counter‘, changeDetection: ChangeDetectionStrategy.OnPush, template: ` <div class="stock-counter"> <div> <div (keydown)="onKeyUp($event)" (blur)="onBlur($event)" (focus)="onFocus($event)" tabindex="0"> <p>{{ value }}</p> <div tabindex="-1"> <button type="button" tabindex="-1" (click)="increment()" [disabled]="value =http://www.mamicode.com/== max"> + </button> <button type="button" tabindex="-1" (click)="decrement()" [disabled]="value =http://www.mamicode.com/== min"> - </button> </div> </div> </div> </div> `})export class StockCounterComponent { @Input() step: number = 1; @Input() min: number = 0; @Input() max: number = 100; @Output() changed = new EventEmitter<number>(); value: number = 0; focused: boolean; increment() { if (this.value < this.max) { this.value = this.value + this.step; this.changed.emit(this.value); } } decrement() { if (this.value > this.min) { this.value = http://www.mamicode.com/this.value - this.step;>
Test:
import { ComponentFixture, TestBed } from ‘@angular/core/testing‘;import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from ‘@angular/platform-browser-dynamic/testing‘;import { DebugElement } from ‘@angular/core‘;import { StockCounterComponent } from ‘./stock-counter.component‘;import { By } from ‘@angular/platform-browser‘;TestBed.initTestEnvironment( BrowserDynamicTestingModule, platformBrowserDynamicTesting());describe(‘StockCounterComponent‘, () => { let component: StockCounterComponent; let fixture: ComponentFixture<StockCounterComponent>; let el: DebugElement; beforeEach(() => { TestBed.configureTestingModule({ declarations: [StockCounterComponent] }); fixture = TestBed.createComponent(StockCounterComponent); component = fixture.componentInstance; el = fixture.debugElement; component.value = 0; }); it(‘should increase the value when + button is clicked‘, () => { el.query(By.css(‘button:first-child‘)).triggerEventHandler(‘click‘, null); expect(component.value).toBe(1); el.query(By.css(‘button:first-child‘)).triggerEventHandler(‘click‘, null); fixture.detectChanges(); expect(component.value).toBe(2); expect(el.query(By.css(‘p‘)).nativeElement.textContent).toBe(‘2‘); }); it(‘should decrease the value when - button is clicked‘, () => { component.value = 2; fixture.detectChanges(); el.query(By.css(‘button:last-child‘)).triggerEventHandler(‘click‘, null); fixture.detectChanges(); expect(component.value).toBe(1); expect(el.query(By.css(‘p‘)).nativeElement.textContent).toBe(‘1‘); }); it(‘should show the right value in p tag when the arrow up key is pressed‘, () => { const event = new Event(‘KeyboardEvent‘) as any; event.code = "ArrowUp"; el.query(By.css(‘.stock-counter > div > div‘)).triggerEventHandler(‘keydown‘, event); fixture.detectChanges(); expect(component.value).toBe(1); expect(el.query(By.css(‘p‘)).nativeElement.textContent).toBe(‘1‘); });});
[Angular] Test component template
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。