Jest: Разрешить перезапись console.error/warn/log в тестах

Созданный на 31 мар. 2017  ·  3Комментарии  ·  Источник: facebook/jest


Вы хотите запросить функцию или сообщить об ошибке ?
характерная черта

Каково текущее поведение?
Из-за BufferedConsole невозможно перезаписать console.error , console.log , console.warn и console.info .

Пример использования: мы хотели бы, чтобы console.error и console.warn выдавали ошибки и не проходили тесты.

Если текущее поведение является ошибкой, предоставьте шаги для воспроизведения и либо демонстрацию repl.it через https://repl.it/languages/jest , либо минимальный репозиторий на GitHub, который мы можем yarn install и yarn test .

Каково ожидаемое поведение?
Я ожидаю, что если я добавлю console.error = (message) => { throw new Error(message); }; (глобально, в тесте или в setupFiles/setupFramework), каждый раз, когда в тесте вызывается console.error , это вызовет ошибку и не пройдёт тест.

В реальности ничего не происходит.

Укажите точную конфигурацию Jest и укажите Jest, узел, версию yarn/npm и операционную систему.

Н/Д

Самый полезный комментарий

Используйте издевательскую функцию jest.fn() :

console.warn = jest.fn(warn => {
  throw new Error(warn);
});

Все 3 Комментарий

Используйте издевательскую функцию jest.fn() :

console.warn = jest.fn(warn => {
  throw new Error(warn);
});

@thymikee Это тоже не работает должным образом, используя глобальный установочный файл:

в "setupTestFrameworkScriptFile": "<rootDir>/tools/jest/setup-framework.js"

beforeEach(() => {
  console.error = jest.fn((error) => {
    throw new Error(error);
  });
});

В тесте:

const somePromiseThatLogsConsoleError = () => {
  return new Promise((resolve, reject) => {
    console.error('foobar');
    resolve();
  });
});

it('test that has console.error', () => {
  return somePromiseThatLogsConsoleError().then(() => {
    expect(false).toBeTrue();
  });
});

Я только что попробовал, и это сработало:

// test file
test('lol', () => {
  return new Promise((resolve) => {
    console.log('lol');
    resolve();
  });
});
// setup file
global.console.log = () => {
  throw new Error('hey!');
};

результат:

 __tests__/test-test.js
  ✕ lol (3ms)

  ● lol

    hey!

      at CustomConsole.Object.<anonymous>.global.console.log (setup.js:2:9)
      at resolve (__tests__/test-test.js:3:13)
      at Object.<anonymous>.test (__tests__/test-test.js:2:10)
      at process._tickCallback (internal/process/next_tick.js:109:7)

Test Summary
 › Ran all tests.
 › 1 test failed, 0 tests passed (1 total in 1 test suite, run time 0.661s)
Была ли эта страница полезной?
0 / 5 - 0 рейтинги

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

hramos picture hramos  ·  3Комментарии

withinboredom picture withinboredom  ·  3Комментарии

Secretmapper picture Secretmapper  ·  3Комментарии

jardakotesovec picture jardakotesovec  ·  3Комментарии

StephanBijzitter picture StephanBijzitter  ·  3Комментарии