Skip to content
This repository was archived by the owner on Mar 5, 2025. It is now read-only.

Commit a16d263

Browse files
committed
mock ws
1 parent 8a00c41 commit a16d263

File tree

2 files changed

+37
-2
lines changed

2 files changed

+37
-2
lines changed

packages/web3-rpc-providers/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
"eslint-config-base-web3": "0.1.0",
5050
"eslint-config-prettier": "^8.5.0",
5151
"eslint-plugin-import": "^2.26.0",
52+
"isomorphic-ws": "^5.0.0",
5253
"jest": "^29.7.0",
5354
"jest-extended": "^3.0.1",
5455
"prettier": "^2.7.1",

packages/web3-rpc-providers/test/unit/constructor.test.ts

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,44 @@ along with web3.js. If not, see <http://www.gnu.org/licenses/>.
1818

1919
import HttpProvider from 'web3-providers-http';
2020
import WebSocketProvider from 'web3-providers-ws';
21+
import WebSocket from 'isomorphic-ws';
22+
2123
import { Web3ExternalProvider } from '../../src/web3_provider';
2224
import { Network, Transport } from '../../src/types';
2325

26+
// Mock implementation so ws doesnt have openhandle after test exits as it attempts to connects at start
27+
jest.mock('isomorphic-ws', () => {
28+
return {
29+
__esModule: true,
30+
default: jest.fn().mockImplementation(() => {
31+
const eventListeners: { [key: string]: Function[] } = {};
32+
33+
return {
34+
addEventListener: jest.fn((event, handler) => {
35+
if (!eventListeners[event]) {
36+
eventListeners[event] = [];
37+
}
38+
eventListeners[event].push(handler);
39+
}),
40+
removeEventListener: jest.fn((event, handler) => {
41+
if (eventListeners[event]) {
42+
eventListeners[event] = eventListeners[event].filter(h => h !== handler);
43+
}
44+
}),
45+
dispatchEvent: jest.fn((event) => {
46+
const eventType = event.type;
47+
if (eventListeners[eventType]) {
48+
eventListeners[eventType].forEach(handler => handler(event));
49+
}
50+
}),
51+
close: jest.fn(),
52+
send: jest.fn(),
53+
readyState: WebSocket.OPEN,
54+
};
55+
}),
56+
};
57+
});
58+
2459
class MockWeb3ExternalProviderA extends Web3ExternalProvider {
2560
public constructor(network: Network, transport: Transport, token: string){
2661
super(network, transport, token, "");
@@ -33,7 +68,7 @@ class MockWeb3ExternalProviderA extends Web3ExternalProvider {
3368
else if (_transport === Transport.WebSocket)
3469
transport = "wss://";
3570

36-
return `${transport}example.com/`;
71+
return `${transport}127.0.0.1/`;
3772
}
3873
}
3974

@@ -54,7 +89,6 @@ describe('Web3ExternalProvider', () => {
5489
const token = 'your-token';
5590

5691
const provider = new MockWeb3ExternalProviderA(network, transport, token);
57-
5892
expect(provider.provider).toBeInstanceOf(WebSocketProvider);
5993
});
6094

0 commit comments

Comments
 (0)