Angular 2 - 为什么ng测试忽略TS编译错误?

时间:2017-02-12 13:49:23

标签: angular angular-cli angular2-testing

我在我的测试(spec文件)中创建了一些TS错误: let num: number = "dsds"

  • 我运行ng测试,测试成功了......为什么?
  • 我希望终端中出现一些TS错误
  • 运行测试时,我需要做些什么来启用此行为(TS catch错误)?
  • 详细说明:
    • @ angular / cli:1.0.0-beta.31
    • node:6.9.2
    • os:win32 x64
    • @ angular / common:2.4.7
    • @ angular / compiler:2.4.7
    • @ angular / core:2.4.7
    • @ angular / forms:2.4.7
    • @ angular / http:2.4.7
    • @ angular / platform-b​​rowser:2.4.7
    • @ angular / platform-b​​rowser-dynamic:2.4.7
    • @ angular / router:3.4.7
    • @ angular / cli:1.0.0-beta.31
    • @ angular / compiler-cli:2.4.7

1 个答案:

答案 0 :(得分:1)

如果希望ng test在编译时捕获它,则必须为此元素编写单独的测试用例。你可以使用,例如RegExp反对检查它是否是一个数字。

it('should be a number', () => {
  expect(component.num).toMatch(/\d+/);
});


修改

如果您声明以下变量:

someNumberVar: number = "thisIsNotANumber";

TypeScript会将其视为错误,但在编译应用时,而非测试!您可以自己查看,设置此变量并开始编译,方法是在控制台中键入ng serve。您将收到以下错误:

<强> Type 'string' is not assignable to type 'number'

如果您想测试您的应用程序,您必须为您要测试的每个元素编写单独的测试用例,如上所述。