© 2026 Hedgehog Software, LLC
import { WebSocket } from 'ws' jest.mock('ws') const testProgram = Effect.scoped( Effect.gen(function* () { const v = yield* Effect.async<string>((resume) => { const ws = new WebSocket('hi') ws.on('open', () => { resume(Effect.succeed('hi')) }) }) return v }).pipe( Effect.provide( Logger.replace( Logger.defaultLogger, Logger.make(({ message }) => console.log(message)), ), ), ), ) it('establishes', async () => { const s = Effect.runPromise(testProgram) listenerFor('open')?.() expect(await s).toEqual('hi') }) const listenerFor = (event: string) => { const call = jest .mocked(WebSocket.prototype.on) .mock.calls.find((c) => c[0] === event) as | [string, (...args: unknown[]) => void] | undefined if (!call) return undefined const [, listener] = call return listener }
.pipe(Effect.provide(...))