Files
NapCatQQ/.pnpm-store/v3/files/d4/94d50ff224db15a2e630cfd1db5679d9b6f2f25ba6f5f51a3388ef8248091430a4bae8d13e5951e9411b62852b3d5d0d2585c3b9b89837aedde2f135ddc3dc
T
TanTan e311ca3275
Build NapCat Artifacts / Type Check & Test (push) Waiting to run
docs: 仓库链接指向本镜像仓库
2026-11-13 09:25:58 +08:00

70 lines
1.6 KiB
Plaintext

import { websocketWrapper } from './proxy';
import WS from "jest-websocket-mock";
let server: WS;
const URL = 'ws://localhost:1234';
const noop = () => {};
const noopRef = { current: noop };
let client: WebSocket;
beforeEach(() => {
server = new WS(URL);
client = new WebSocket(URL);
});
afterEach(() => {
WS.clean();
});
test('It wraps a Websocket such that properties are still inspectable', () => {
const wrappedWebsocket = websocketWrapper(
client,
noopRef,
);
expect('readyState' in wrappedWebsocket).toBe(true);
//@ts-ignore
expect(wrappedWebsocket['ReadyState']).toBe(undefined);
});
test('It prevents consumers of a shared websocket from invoking methods outside of the library', () => {
const onCloseFn = jest.fn(() => {});
const onMessageFn = jest.fn(() => {});
client.onclose = onCloseFn;
client.send = onMessageFn;
const wrappedWebsocket = websocketWrapper(
client,
noopRef,
);
wrappedWebsocket.close();
expect(onCloseFn).toHaveBeenCalledTimes(0);
wrappedWebsocket.send('Hello');
expect(onMessageFn).toHaveBeenCalledTimes(0);
client.send('Hello');
expect(onMessageFn).toHaveBeenCalledTimes(1);
});
test('It prevents consumers of a shared websocket from setting the event callbacks outside of the library', () => {
const onCloseFn1 = jest.fn(() => {});
const onCloseFn2 = jest.fn(() => {});
const onMessageFn = jest.fn(() => {});
client.onclose = onCloseFn1;
client.send = onMessageFn;
const wrappedWebsocket = websocketWrapper(
client,
noopRef,
);
expect(() => {
wrappedWebsocket.onclose = onCloseFn2;
}).toThrow();
});