@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>
47 lines (45 loc) • 2.06 kB
text/typescript
import { BREADCRUMBCATEGORYS, BrowserBreadcrumbTypes, BrowserEventTypes } from '@sdc-monitor/shared'
import { getBreadcrumbCategoryInBrowser } from '@sdc-monitor/utils'
import { BrowserClient } from '../../browserClient'
import fetchPlugin from '../../plugins/fetch'
import fetch from 'node-fetch'
describe('fetchPlugin', () => {
// eslint-disable-next-line @typescript-eslint/no-extra-semi
;(window as any).fetch = fetch
fetchPlugin.monitor = jest.fn(fetchPlugin.monitor)
fetchPlugin.transform = jest.fn(fetchPlugin.transform)
fetchPlugin.consumer = jest.fn(fetchPlugin.consumer)
const browserInstance = new BrowserClient({
dsn: 'http://test.com/upload'
})
browserInstance.use([fetchPlugin])
it("fetchPlugin's func should be called by browserClient", (done) => {
expect(fetchPlugin.name).toBe(BrowserEventTypes.FETCH)
expect((fetchPlugin.monitor as jest.Mock).mock.calls.length).toBe(1)
// jest is run in node, so fetch is undefined
window
.fetch('https://www.baidu.com')
.then(() => {
setTimeout(() => {
// not work in travis
// expect((fetchPlugin.transform as jest.Mock).mock.calls.length).toBe(1)
// expect((fetchPlugin.consumer as jest.Mock).mock.calls.length).toBe(1)
// const stack = browserInstance.breadcrumb.getStack()
// expect(stack[0].category).toBe(getBreadcrumbCategoryInBrowser(BrowserBreadcrumbTypes.FETCH))
// expect(stack.length).toBe(1)
done()
}, 2000)
})
.catch(() => {
setTimeout(() => {
expect((fetchPlugin.transform as jest.Mock).mock.calls.length).toBe(1)
expect((fetchPlugin.consumer as jest.Mock).mock.calls.length).toBe(1)
const stack = browserInstance.breadcrumb.getStack()
expect(stack[0].category).toBe(getBreadcrumbCategoryInBrowser(BrowserBreadcrumbTypes.FETCH))
expect(stack[1].category).toBe(BREADCRUMBCATEGORYS.EXCEPTION)
expect(stack.length).toBe(2)
done()
}, 2000)
})
})
})