add.js
export default a => b => a+b;
Run Code Online (Sandbox Code Playgroud)
module.js
import add from './add';
export default {
add1: n => add(1)(n),
};
Run Code Online (Sandbox Code Playgroud)
测试 /module.js
import add from '../add';
import module from '../module';
jest.mock('../add', () => () => jest.fn());
module.add1(6);
expect(add.mock.calls).toHaveLength(1);
Run Code Online (Sandbox Code Playgroud)
可以调用此函数,但它add不是模拟函数,而是add()模拟函数,但是未正确记录调用参数。
jest.mock('../add', () => () => jest.fn(a => b => a+b));
Run Code Online (Sandbox Code Playgroud)
也尝试过这种方法,但似乎也无法正常工作。
jest.mock('../add', jest.fn(a => b => a+b));
Run Code Online (Sandbox Code Playgroud)
这会引发inline function错误
目前有没有模拟咖喱功能的正确方法?
简单版本应该是这样的
jest.mock('../add', () => (a) => jest.fn(b => a+b));
Run Code Online (Sandbox Code Playgroud)
因此,您add使用一个函数来模拟模块,该函数返回当被调用时返回间谍,问题是您无法在间谍上测试任何内容。
所以我们需要重构它,这样你就可以add1在测试范围内像间谍一样思考
import add from '../add'
jest.mock('../add', () => jest.fn)
const addC = jest.fn()
add.mockImplemetation((a) => {
addC.mockImplementation((b => a+b)
return addC
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1603 次 |
| 最近记录: |