2017-02-12 126 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