esmocha
Version:
[Mocha](https://mochajs.org) wrapper with built-in [typescript](https://github.com/node-loaders/loaders/tree/main/workspaces/esbuild), built-in [expect](https://jestjs.io/docs/expect) with [mock](https://github.com/node-loaders/loaders/tree/main/workspace
36 lines • 1.51 kB
JavaScript
import { ModuleMocker } from 'jest-mock';
import { resolveCallerUrl } from './caller-resolve.js';
let quibble;
const moduleMocker = new ModuleMocker(global);
export const resetAllMocks = moduleMocker.resetAllMocks.bind(moduleMocker);
export const fn = moduleMocker.fn.bind(moduleMocker);
export const spyOn = moduleMocker.spyOn.bind(moduleMocker);
export const restoreAllMocks = moduleMocker.restoreAllMocks.bind(moduleMocker);
export const clearAllMocks = moduleMocker.clearAllMocks.bind(moduleMocker);
export const isMockFunction = moduleMocker.isMockFunction.bind(moduleMocker);
export const reset = (hard) => {
quibble?.reset(hard);
};
export async function mock(specifier,
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
actual = import(specifier)) {
if (specifier.startsWith('.')) {
// Resolve relative paths since quibble will resolve having this file as the caller
specifier = new URL(specifier, resolveCallerUrl()).href;
}
let mockReturn;
if ('then' in actual) {
const metadata = moduleMocker.getMetadata(await actual);
mockReturn = moduleMocker.generateFromMetadata(metadata);
}
else {
mockReturn = actual;
}
const quibbleModule = await import('quibble');
quibble = quibbleModule.default;
quibble(specifier, mockReturn);
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
await quibble.esm(specifier, mockReturn);
return mockReturn;
}
//# sourceMappingURL=jest-mock.js.map