问题描述
我在整个申请表中都这样:
我的功能很好,但是在运行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
}
测试覆盖率报告的图像:
解决方法
发表评论后,我自己尝试了一些其他修复,显然删除了 transform
中的 jest.config.js
键修复了问题:
module.exports = {
...
globals: {
'ts-jest': {
tsconfig: 'tsconfig.test.json',babelConfig: 'babel.config.js'
},},// Removed this part:
// transform: {
// '^.+\\.js$': '<rootDir>/node_modules/babel-jest',// '^.+\\.(ts|tsx)?$': 'ts-jest',// },moduleNameMapper: {
'\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$':
'identity-obj-proxy',..
}
不确定它是否与您的项目相同,但您可以尝试一下。