Как 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 считает покрытыми. Можете обычную функцию добавить и даже не вызвать и увидите красную линию означающий что это линию не покрыта тестами.