2017-02-12 125 views
0

我在我的测试(spec文件)中创建了一些TS错误,例如: let num: number = "dsds"Angular 2 - 为什么ng测试忽略TS编译错误?

  • 我运行ng测试,测试成功......为什么?
  • 我希望在终端中得到一些TS错误
  • 当运行测试时,我需要做什么来启用此行为(TS捕获错误)?
  • 详细说明:
    • @角/ CLI:1.0.0-beta.31
    • 节点:6.9.2
    • OS:win32的64
    • @角/共同:2.4.7
    • @角/编译器:2.4.7
    • @角/芯:2.4.7
    • @角/形式:2.4.7
    • @角/ HTTP:2.4。 7
    • @角/平台的浏览器:2.4.7
    • @角/平台的浏览器的动态:2.4.7
    • @角/路由器:3.4.7
    • @角/ CLI:1.0。 0-beta.31
    • @角/编译器CLI:2.4.7
+0

你能告诉我们你的测试代码吗? – MChaker

+0

当然,但它确实是一个因为它涉及到TS错误的错误。 (它应该创建应用程序),async(()=> {{0}} {0} {0} const fixture = TestBed.createComponent(AppComponent); const app = fixture.debugElement。componentInstance; let num:number =“dsds”;期望(app).toBeTruthy(); }));' – user2415300

回答

1

如果你想ng test抓住它在编译时,你必须写一个单独的测试案例这个元素。您可以使用,例如RegExp对象来检查它是否或它不是一个数字。

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


编辑

如果您声明下面的变量:

someNumberVar: number = "thisIsNotANumber"; 

的打字稿将赶上它是错的,但在编译的应用程序,而不是在测试!你可以自己检查它,设置这个变量并开始编译,在控制台中输入ng serve。您将收到以下错误:

Type 'string' is not assignable to type 'number'

在情况下,如果你想测试您的应用程序,你必须写一个单独的测试用例要测试的每个元素,正如我上面提到。

+0

毫米,但为什么?这是一个TS编译错误,不是逻辑错误或运行时异常。 – user2415300

+0

@ user2415300编辑我的文章。 –

+0

所以你说的是,当你运行测试时,只是在构建/运行应用程序时,类型脚本编译错误不会被捕获? – user2415300