如何模拟作为参数传递的回调调用?

我想知道如何模拟作为参数传递的回调调用:


type YesOrNoHandler = (yesOrNo: boolean) => void

type CheckValue = (val: string, handler: YesOrNoHandler)

在这个例子中,我想模拟参数的调用handler: YesOrNoHandler,它代表一个回调。


const check = jest.fn().mockImplementation((_, handler) => {

   handler(true) // how to call `handler` outside of this scope ?

})

实际上,我什至不确定我是否必须为此开玩笑。有人知道如何实现这一目标吗?


桃花长相依
浏览 68回答 1
1回答

沧海一幻觉

只需将 分配给handler外部定义的变量。例如describe('61504714', () => {  it('should pass', () => {    let handlerRef;    const check = jest.fn().mockImplementation((_, handler) => {      console.log('call check');      handlerRef = handler;    });    const callback = jest.fn((yesOrNo: boolean) => (yesOrNo ? 'yes' : 'no'));    check('_', callback);    expect(callback).not.toBeCalled();    const rval = handlerRef(true);    expect(rval).toBe('yes');    expect(check).toBeCalledWith('_', callback);    expect(callback).toBeCalledWith(true);  });});试验结果: PASS  stackoverflow/61504714/index.test.ts (11.463s)  61504714    ✓ should pass (33ms)  console.log stackoverflow/61504714/index.test.ts:5    call checkTest Suites: 1 passed, 1 totalTests:       1 passed, 1 totalSnapshots:   0 totalTime:        13.581s
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript