Как jest считает процент покрытия?

по какому принципу Jest считает процент покрытия? Код покрыт не на 100%, но он выдаёт, что 100% покрытия. У меня есть файл, в нём есть функция и пару текстов.

import React from 'react';

import './App.css';

function App() {


  function sum(a: number, b: number): number {
    return a + b;
  }


  return (
    <div className="App">
      {sum(132, 13)}
      <h1>Привет мир</h1>
      <h2>Привет мир2</h2>
    </div>
  );
}

export default App;

Файл теста

   render(<App />);

   const title = screen.getByText('Привет мир');
   expect(title).toBeInTheDocument();

Как вы видите при тесте, покрытие файл не 100%, но jest выдаёт, что данный файл покрыт на 100% почему так выходит?


Ответы (1 шт):

Автор решения: Избыток сусликов

Jest считает покрытие кода используя плагин babel-plugin-istanbul.

Детально как это все работает под капотом можно прочитать тут. Я не стал все это переводить и добавлять в ответ так как очень много лишнего получится.

И так, переходим к вашему вопросу. У вас все верно. Покрытие кода 100% потому что функция sum вызывается в фазе рендера.

return (
    <div className="App">
      {sum(132, 13)} // <--

Функции которые вызываются на фазе рендера jest считает покрытыми. Можете обычную функцию добавить и даже не вызвать и увидите красную линию означающий что это линию не покрыта тестами.

→ Ссылка