小编dgk*_*ane的帖子

Angular2测试:ComponentFixture中DebugElement和NativeElement对象之间的区别是什么?

我目前正在整理一些在组件级别上测试Angular 2应用程序的最佳实践.

我已经看过一些教程查询fixture的NativeElement对象的选择器等,例如

it('should render "Hello World!" after click', async(() => {
    builder.createAsync(HelloWorld).then((fixture: ComponentFixture<HelloWorld>) => {
        fixture.detectChanges();
        let el = fixture.nativeElement;
        el.querySelector('h1').click();
        fixture.detectChanges();
            
        expect(el.querySelector('h1')).toHaveText('Hello World!');
    });
}));
Run Code Online (Sandbox Code Playgroud)

但是,在juliemr的Angular 2测试种子中,她通过父DebugElement对象访问NativeElement.

it('should render "Hello World!" after click', async(() => {
    builder.createAsync(HelloWorld).then((fixture: ComponentFixture<HelloWorld>) => {
      fixture.detectChanges();
      let compiled = fixture.debugElement.nativeElement;
      compiled.querySelector('h1').click();
      fixture.detectChanges();
            
      expect(compiled.querySelector('h1')).toHaveText('Hello World!');
    });
}));
Run Code Online (Sandbox Code Playgroud)

是否有任何特定情况你会在其nativeElement上使用fixture的debugElement.nativeElement?

javascript dom unit-testing jasmine angular

59
推荐指数
4
解决办法
3万
查看次数

视图不会首次更新Angular 2 RC6中的组件属性更改

我的项目中有一个组件调用一个服务来检索一些(本地存储的)JSON,它被映射到一个对象数组并返回给要显示的组件.我遇到的问题是视图中的绑定似乎在我第一次调用服务时没有更新,但是第二次调用服务时会更新.

组件模板:

@Component({
    selector: 'list-component',
    template: `
        <button type="button" (click)="getListItems()">Get List</button>
        <div>
            <table>
                <tr>
                    <th>
                        ID
                    </th>
                    <th>
                        Name
                    </th>
                    <th>
                        Job Title
                    </th>
                </tr>
                <tr *ngFor="let employee of _employees">
                    <td>
                        {{employee.id}}
                    </td>
                    <td>
                        {{employee.name}}
                    </td>
                    <td>
                        {{employee.jobTitle}}
                    </td>
                </tr>
            </table>
        </div>
    `,
    changeDetection: ChangeDetectionStrategy.Default
})
Run Code Online (Sandbox Code Playgroud)

组件控制器类:

export class ListComponent {

    _employees: Employee[];

    constructor(
        private employeeService: EmployeeService
    ) {

    }

    getListItems() {
        this.employeeService.loadEmployees().subscribe(res => {
            this._employees = res;
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

和服务:

@Injectable()
export class EmployeeService {

    constructor(
        private http: …
Run Code Online (Sandbox Code Playgroud)

typescript angular

7
推荐指数
1
解决办法
952
查看次数

标签 统计

angular ×2

dom ×1

jasmine ×1

javascript ×1

typescript ×1

unit-testing ×1