2017-02-12 2 views
0

Я создаю ошибку TS в своем тесте (spec file), таком как: let num: number = "dsds".Угловая 2 - почему ng test игнорировать ошибку компиляции TS?

  • Я запустил тест ng, и тест прошел успешно ... почему?
  • Я ожидал получить некоторую ошибку TS в терминале
  • Что мне нужно сделать, чтобы включить это поведение (ошибка catch TS) при выполнении тестов?
  • Детали:
    • @ угловой/CLI: 1.0.0-beta.31
    • узел: 6.9.2
    • ОС: Win32 x64
    • @ угловая/общая: 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
    • @ угловой/составитель-кли: 2.4.7
+0

Можете ли вы показать нам свой тестовый код? – MChaker

+0

уверен, но на самом деле obviuos один, потому что он связан с ошибкой TS comipilition. 'it ('должно создать приложение', async (() => { const fixture = TestBed.createComponent (AppComponent); const app = fixture.debugElement.componentInstance; let num: number = "dsds"; ожидать (приложение) .toBeTruthy(); })); ' – user2415300

ответ

1

Если вы хотите ng test поймать его во время компиляции, вы должны написать отдельный тестовый пример для этого элемента. Вы можете использовать, например. RegExp объект, чтобы проверить, есть ли он или нет.

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


Edit:

Если объявить следующую переменную:

someNumberVar: number = "thisIsNotANumber"; 

машинописи будет поймать его как ошибка, но в то время как компиляции приложение, а не в то время тестирование! Вы можете проверить это самостоятельно, установить эту переменную и запустить компиляцию, набрав в консоли ng serve. Вы получите следующую ошибку:

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

В случае, если Вы хотели бы теста вашего приложения, вы должны написать отдельные тестовые случаи для каждого элемента, который вы хотите проверить, как я уже говорил выше.

+0

мм, но почему? Это ошибка компиляции TS, а не логическая ошибка или исключение времени выполнения. – user2415300

+0

@ user2415300 Отредактировано мое сообщение. –

+0

, так что вы говорите, что ошибка компиляции скрипта типа НЕ будет ловить, когда u запускает тестирование, только при создании/запуске приложения? – user2415300

Смежные вопросы