小编Kam*_*len的帖子

Angular 模板中 getter 的性能影响

我正在接管现有的 Angular 应用程序。在其中,我一直看到许多组件中模板中使用的值实际上是一个用 getter/setter 屏蔽的属性,没有任何额外的逻辑:

<input type="number" [(ngModel)]="age" [disabled]="formDisabled">


get formDisabled() {
    return this._formDisabled;
}
set formDisabled(value: boolean) {
    this._formDisabled = value;
}
Run Code Online (Sandbox Code Playgroud)

我们的应用程序有性能目标。在 AngularJS 中,模板中的任何函数都会影响性能,因为它必须被计算(甚至只是为了返回值)。在 Angular(现在是 5)中它仍然是真的,如果我遇到它们,我应该用直接字段替换那些无用的访问器吗?

谢谢。

typescript angular

6
推荐指数
1
解决办法
3472
查看次数

预计 observable 在 Angular / Karma / Jasmine 测试中失败

我有一个组件,最终通过连续调用一堆 HTTP 服务switchMap来从后端获取数据。

我想测试错误处理部分。该应用程序具有全局错误处理 (ErrorHandler) 和通过 catchError 进行的本地错误处理。

测试方法如下所示:

  public methodUsingObservable() {
    this.someRequest()
      .pipe(catchError((error) => this.handleError(error)))
      .subscribe(console.log);
  }
Run Code Online (Sandbox Code Playgroud)

处理错误检查错误是否链接到业务操作,并再次抛出以由全局处理程序处理

handleError(error) {
    checkLocally(error);
    return throwError(error);
  }
Run Code Online (Sandbox Code Playgroud)

对于我的测试,我模拟someRequestthrowError后端调用的问题

  it('should handle the error when one occurs', fakeAsync(() => {
    const service: MachinService = TestBed.get(MachinService);
    spyOn(service,'someRequest').and.returnValue(throwError(new Error("Failing HTTP call")));
    spyOn(service,'handleError').and.callThrough();


    service.methodUsingObservable();
    tick();

    expect(service.methodUsingObservable).toThrowError();
    expect(service.handleError).toHaveBeenCalled();
 }));
Run Code Online (Sandbox Code Playgroud)

然而,无论我如何监视和期望某些东西,Karma 都会认为测试失败,因为订阅正如实际预期的那样,抛出了未处理的错误。

我尝试过:

expect(service.methodUsingObservable).toThrowError();
expect(service.methodUsingObservable()).toThrowError();
expect(() => service.methodUsingObservable()).toThrowError();
Run Code Online (Sandbox Code Playgroud)

但似乎没有人教系统接受测试成功,并且测试失败。

Chrome 62.0.3202 (Windows 10.0.0) MachinService should handle the error when one occurs FAILED
    Error: …
Run Code Online (Sandbox Code Playgroud)

unit-testing rxjs karma-jasmine angular

5
推荐指数
1
解决办法
2387
查看次数

标签 统计

angular ×2

karma-jasmine ×1

rxjs ×1

typescript ×1

unit-testing ×1