我有lib提供的功能(来自NPM的项目依赖项)。此功能的签名类似
function dependency(
someParam: string,
callback: (data: string) => void
): void { ... }
此函数已由我的函数(需要测试)以如下方式调用:
async function tested(): Promise<string> {
return new Promise<string>((resolve): void => dependency('qwerty', resolve));
}
我需要使用Jest测试我的tested
函数,但是我想以单元测试的方式对其进行测试,因此我需要模拟dependency
的结果。这个示例非常简单,但是实际上,我需要一些其他逻辑来提供来自dependency
的不同数据。
监视此函数会通知我它正在被调用,但是我需要模拟实现并完全阻止执行lib的实现。
答案 0 :(得分:0)
这是一个简单的示例,可以帮助您入门:
lib.ts
export function dependency(
someParam: string,
callback: (data: string) => void
): void {
throw new Error('should never get here');
}
code.ts
import { dependency } from './lib';
export async function tested(): Promise<string> {
return new Promise<string>((resolve): void => dependency('qwerty', resolve));
}
code.test.ts
import * as lib from './lib';
import { tested } from './code';
test('tested', async () => {
const mock = jest.spyOn(lib, 'dependency');
mock.mockImplementation((someParam, callback) => {
callback('mocked result');
});
const result = await tested();
expect(result).toBe('mocked result'); // Success!
})