Как сделать так, чтобы тест ng провалился на предупреждениях - PullRequest
1 голос
/ 06 марта 2020

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

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

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

Ответы [ 2 ]

0 голосов
/ 06 марта 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));

0 голосов
/ 06 марта 2020

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

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

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

...