Как сделать так, чтобы ng test не выдавал предупреждения

Я только что закончил исправлять несколько предупреждений в своих модульных/компонентных тестах моего приложения Angular, которые запускаются с использованием ng test (с Karma/Jasmine).

Этот процесс может занять довольно много времени, так как не всегда очевидно, какие тестовые случаи вызывают предупреждения.

Итак, теперь, когда у меня больше нет предупреждений, мне интересно, есть ли способ заставить ng test автоматически завершать работу всякий раз, когда есть какие-либо предупреждения.


person Francesco Borzi    schedule 06.03.2020    source источник
comment
Вы нашли решение?   -  person claudekennilol    schedule 27.10.2020


Ответы (3)


Может быть, что-то подобное в test.ts или где-то еще, где инициализируются тесты.

console.warn = (message) => throw new Error(message);

Не знаю, порекомендовал бы я это, потому что предупреждения — это всего лишь предупреждения, а ошибки — это ошибки, и с ними следует обращаться немедленно. Где бы вы разместили это только для тестов, тоже может быть сложно.

person AliF50    schedule 06.03.2020

Простое и легкое исправление — это блок beforeAll в вашем файле test.ts. Он заменяет все консольные методы функцией ошибки.

Таким образом, тесты не пройдут, если вы вызовете console.log, и вы будете знать, какие именно.

Если вы все еще хотите использовать console.log в тестируемом модуле, вы можете шпионить за ним. Но это также плохо из-за общего глобального состояния.

Вот пример:

const errorFn = () => { throw new Error('No console logs!'); };
beforeAll(() => Object.keys(console).forEach((fn: string) => (console as any)[fn] = errorFn));

person Darlan Alves    schedule 06.03.2020

Определите дополнительный файл в корне вашей рабочей области, например, с именем karma.globals.js, который выглядит так:

// add globals for karma test runs
console.warn = (message) => { throw new Error(message); };

Теперь включите его в свой корень karma.conf.js, например:

const { join } = require('path');

module.exports = () => {
  return {
    
    // ...

    files: [
      join(__dirname, 'karma.globals.js')
    ]

    // ...
  };
};
person bohoffi    schedule 06.11.2020