@sdc-monitor/demo
Version:
<div align="center"> <a href="#" target="_blank"> <img src="https://i.loli.net/2021/07/28/EvPwd4NjVH3tBfO.jpg" alt="mito-logo" height="90"> </a> <p>A Lightweight SDK For Monitor Web</p>
42 lines (40 loc) • 2.03 kB
text/typescript
import { BREADCRUMBCATEGORYS, BrowserBreadcrumbTypes } from '@sdc-monitor/shared'
import { ReportDataType } from '@sdc-monitor/types'
import { Severity, sleepRun } from '@sdc-monitor/utils'
import { BrowserClient } from '../../browserClient'
import unhandlerejectionPlugin from '../../plugins/unhandlerejecttion'
describe('unhandlerejectionPlugin', () => {
const browserInstance = new BrowserClient({
dsn: 'http://test.com/upload'
})
unhandlerejectionPlugin.monitor = jest.fn(unhandlerejectionPlugin.monitor)
unhandlerejectionPlugin.transform = jest.fn(unhandlerejectionPlugin.transform)
unhandlerejectionPlugin.consumer = jest.fn(unhandlerejectionPlugin.consumer)
browserInstance.use([unhandlerejectionPlugin])
it("unhandlerejectionPlugin's func should be called by browserClient", () => {
expect((unhandlerejectionPlugin.monitor as jest.Mock).mock.calls.length).toBe(1)
// don't simulate code error in node,so pass in param in errorPlugin.transform
// should test in e2e
})
it('mock promise reject data to test unhandlerejectionPlugin.transform and unhandlerejectionPlugin.consumer', (done) => {
const reason = 'promise reject reason'
const type = 'unhandledrejection'
const mockPromiseRejectData: Partial<PromiseRejectionEvent> = {
reason,
type
}
const transformedData = unhandlerejectionPlugin.transform.call(browserInstance, mockPromiseRejectData)
unhandlerejectionPlugin.consumer.call(browserInstance, transformedData)
sleepRun(() => {
const breadcrumbStack = browserInstance.breadcrumb.getStack()
const item = breadcrumbStack.pop()
expect(item.category).toBe(BREADCRUMBCATEGORYS.EXCEPTION)
expect(item.type).toBe(BrowserBreadcrumbTypes.UNHANDLEDREJECTION)
expect(item.level).toBe(Severity.Error)
expect((item.data as ReportDataType).message).toBe(reason)
expect((item.data as ReportDataType).name).toBe(type)
expect((item.data as ReportDataType).level).toBe(Severity.Low)
done()
})
})
})