gpt4 book ai didi

jestjs - 如何用 Jest 模拟 curry 函数?

转载 作者:行者123 更新时间:2023-12-04 19:28:26 25 4
gpt4 key购买 nike

添加.js

export default a => b => a+b;

模块.js

import add from './add';

export default {
add1: n => add(1)(n),
};

测试/module.js

import add from '../add';
import module from '../module';

jest.mock('../add', () => () => jest.fn());

module.add1(6);
expect(add.mock.calls).toHaveLength(1);

这个可以调用,但是 add不会是模拟函数,而是 add()是一个模拟函数,但调用参数未正确记录。
jest.mock('../add', () => () => jest.fn(a => b => a+b));

也试过这个,它似乎也不能正常工作。
jest.mock('../add', jest.fn(a => b => a+b));

这会抛出 inline function错误

目前有没有正确的方法来模拟 curry 功能?

最佳答案

简单版本应该是这样的

jest.mock('../add', () => (a) => jest.fn(b => a+b));

所以你 mock add具有返回函数的模块,当被调用时它返回 spy ,问题你不能在 spy 上测试任何东西。

所以我们需要重构它,这样你就有了 add1在测试范围内以 spy 的身份思考
import add from '../add'
jest.mock('../add', () => jest.fn)

const addC = jest.fn()
add.mockImplemetation((a) => {
addC.mockImplementation((b => a+b)
return addC
})

关于jestjs - 如何用 Jest 模拟 curry 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48905979/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com