Ich habe versucht zu verstehen, wie Unit-Tests in eckigen funktioniert, ich versuche immer noch zu verstehen, eckige 2 und seine Syntax, die das Testen ein wenig schwieriger zu verstehen macht.Mehr oder weniger versuchen Sie die hier aufgeführten Beispiele folgen: https://angular.io/docs/ts/latest/guide/testing.html#!#testbedUnit-Tests in Angular 2 mit Karma
In meinem Projekt habe ich Komponente
Workflow-display.component:
import { Component,Input} from '@angular/core';
//some other imports hidden
@Component({
selector: 'workflow-display',
template: require('./workflow-display.component.html')
})
export class WorkflowDisplayComponent implements OnInit {
taskQuery: string = 'process=workstream&taskStatus=RUNNING'; // the query parameters to pass to the tasks web service
workbenchTaskPage: string = 'wsIndex'; // workbench page to use to open tasks
tasks: IGrcTask[];
currentTask: IGrcTask;
@Input()
environment: String;
//some properties may hidden due to being irrelevant to the question
constructor(private _workflowService: WorkflowService) {
}
//some other functions hidden
//called on double click event in the html dom,THIS IS the function I want to test
openTask(event: any, task: any) {
//this.enviroment is initiliaze/bound by app.component through one way binding
window.open(this.environment + this.workbenchTaskPage + "?taskId=" + task.taskId + "&activitiWorkflow=true");
}
}
Dies ist mein HMTL-Vorlage Seite
Workflow-display.component.html:
<!--container div ,table and other HTML hidden-->
<tbody *ngIf='!tasks || tasks.length == 0'>
<tr>
<td align="left" colspan="8">There are no tasks.</td>
</tr>
</tbody>
<tbody *ngIf='(taskMode == "workorder") && tasks && tasks.length'>
<ng-container *ngFor='let task of tasks; let i=index'>
<tr (dblclick)="openTask($event, task)"
id="workspace_table_wo_{{ task.workOrderId }}_task_{{ task.taskId }}_workorder"
[class.table-active]="isSelected(task)">
<!--remaining html hidden to avoid been clear-->
Deshalb möchte ich im Grunde paar Dinge zu testen, zum einen, dass die DOM dh jeder tr das entsprechende Ereignis dh (dblclick)="openTask($event, task)"
und die Open Funktion hat sich nicht sicher, was Der genaue Weg ist.
Meine versucht Spec-Datei, ich jeden Test noch nicht schreiben, Dies ist, wo ich will mich ..
Workflow-display.component.spec.ts:
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { DebugElement } from '@angular/core';
import { WorkflowDisplayComponent } from './workflow-display.component';
describe('WorkflowDisplayComponent (inline template)',() => {
let comp: WorkflowDisplayComponent;
let fixture: ComponentFixture<WorkflowDisplayComponent>;
let de: DebugElement; //Element to test
let el: HTMLElement; //HMTL of element
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [ WorkflowDisplayComponent ], // declare the test component
});
fixture = TestBed.createComponent(WorkflowDisplayComponent);
comp = fixture.componentInstance; // BannerComponent test instance
// query for the title <h1> by CSS element selector
de = fixture.debugElement.query(By.css('good way to select the tr??'));
el = de.nativeElement;
});
});