У меня есть это во всем моем приложении: у меня есть хорошо покрытая функция, однако в отчете о покрытии тестами, созданном Istanbul после запуска сценария покрытия Jest, говорится, что ветвь не покрыта в async function
части.
Что это значит? Как я могу покрыть это?
Я не понимаю, что не входит в эти функции.
Пример теста для функции getPolicyStatsAPI: Остальные функции тестируются таким же образом. Я не верю, что ответ находится в наборах тестов. Но если нужно, могу поделиться остальным.
describe(`API Calls`, () => {
const mockFetch = jest.fn()
global.fetch = mockFetch
beforeEach(() => {
mockFetch.mockClear()
})
test('getPolicyStatsAPI fetches the data and returns it as expected', async () => {
mockFetch.mockReturnValueOnce(createAPIResponse(policySearchState))
const response = await getPolicyStatsAPI(reqBody)
expect(fetch).toBeCalledTimes(1)
expect(response).toEqual(policySearchState.data)
})
test('getPolicyStatsAPI returns error on exception', async () => {
const error = new Error(errorMessage)
// eslint-disable-next-line prefer-promise-reject-errors
mockFetch.mockImplementationOnce(() => Promise.reject(errorMessage))
await expect(getPolicyStatsAPI(reqBody)).rejects.toEqual(error)
expect(fetch).toBeCalledTimes(1)
})
})
Вот код, на котором я получаю предупреждение о ветке, не покрытой: Предупреждение о ветке, не покрытой, появляется прямо над частью кода асинхронной функции и только там, как желтая подсветка.
export async function getPolicyStatsAPI(reqBody: APIRequestBody) {
const body: APIRequestBody = {
...reqBody,
}
type ExpectedResponse = { data: PolicyStats[] }
const response = await callAPI<ExpectedResponse>({
url: Endpoint.POLICY_STATS,
method: 'POST',
body,
})
return response.data
}