UNPKG

@zyf2e/mitojs

Version:

A SDK for monitoring browser errors

118 lines (115 loc) 3.4 kB
import { ResourceErrorTarget } from '@/browser/handleEvents' import { ERRORTYPES, HTTPTYPE } from '@/common/constant' import { httpTransform, resourceTransform } from '@/core' import { getRealPath } from '@/core/errorId' import { EMethods } from '@/types' import { MITOHttp } from '@/types/common' import { getLocationHref } from '@/utils' import { fromHttpStatus } from '@/utils/httpStatus' import { Severity } from '@/utils/Severity' describe('transformData.ts', () => { it('should resourceTransform func work', () => { const mockData: ResourceErrorTarget = { src: 'https://test.com/a.jpg', localName: 'img' } const originData = resourceTransform(mockData) expect(originData).toEqual({ type: ERRORTYPES.RESOURCE_ERROR, url: getLocationHref(), message: `资源地址: ${mockData.src.slice(0, 100)}`, level: Severity.Low, time: originData.time, name: `图片加载失败` }) }) it('should httpTransform func work', () => { const traceId = '123-321-456-654' const common: MITOHttp = { type: HTTPTYPE.XHR, time: 10000, method: EMethods.Get, traceId, url: 'https://test.com/a?test=1', reqData: { testData: 1 }, responseText: null } const mockData1: MITOHttp = { status: 0, elapsedTime: 10, ...common } expect(httpTransform(mockData1)).toEqual({ url: getLocationHref(), type: ERRORTYPES.FETCH_ERROR, time: common.time, elapsedTime: mockData1.elapsedTime, level: Severity.Low, message: `http请求失败,失败原因:跨域限制或域名不存在 ${getRealPath(common.url)}`, name: `${common.type}--${common.method}`, request: { httpType: common.type, traceId, method: common.method, url: common.url, data: common.reqData }, response: { status: mockData1.status, data: common.responseText } }) const mockData2: MITOHttp = { status: 0, elapsedTime: 2000, ...common } expect(httpTransform(mockData2)).toEqual({ url: getLocationHref(), type: ERRORTYPES.FETCH_ERROR, time: common.time, elapsedTime: mockData2.elapsedTime, level: Severity.Low, message: `http请求失败,失败原因:超时 ${getRealPath(common.url)}`, name: `${common.type}--${common.method}`, request: { httpType: common.type, traceId, method: common.method, url: common.url, data: common.reqData }, response: { status: mockData2.status, data: common.responseText } }) const mockData3: MITOHttp = { status: 429, elapsedTime: 2000, ...common } expect(httpTransform(mockData3)).toEqual({ url: getLocationHref(), type: ERRORTYPES.FETCH_ERROR, time: common.time, elapsedTime: mockData3.elapsedTime, level: Severity.Low, message: `${fromHttpStatus(mockData3.status)} ${getRealPath(common.url)}`, name: `${common.type}--${common.method}`, request: { httpType: common.type, traceId, method: common.method, url: common.url, data: common.reqData }, response: { status: mockData3.status, data: common.responseText } }) }) })