访问自动模拟函数的 .mock 属性
Accessing .mock property of an automocked function
我有这个代码:
import * as a from 'a-a';
jest.mock('a-a');
describe('a-a', () => {
beforeAll(async () => {
const x = await a.x(1); // Calls the mock
console.log(x); // 1
console.log(a.x.mock) // Undefined
});
});
模拟函数是:
export async function x(data) {
cache.push(data);
console.log('HERE'); // this is printed
return data;
}
模块的 mock 在 __mocks__
目录中。
a.x()
调用模拟函数,但 a.x.mock
未定义。
这怎么可能? .mock
属性 在哪里?
所以,经过一些调查,我发现 __mocks__
目录中声明的函数默认情况下没有被 jest.fn()
包装。
我个人觉得这件事有点令人困惑。
所以你可以两者都做
function x(data) {
cache.push(data);
return cache;
}
jest.mock('a-a', () => ({x: x}))
如果您在同一个文件中执行所有操作,或者
jest.mock('a-a');
然后在 __mocks__/a-a.js
文件中
export const x = jest.fn(async (data) => {
cache.push(data);
return cache;
});
我有这个代码:
import * as a from 'a-a';
jest.mock('a-a');
describe('a-a', () => {
beforeAll(async () => {
const x = await a.x(1); // Calls the mock
console.log(x); // 1
console.log(a.x.mock) // Undefined
});
});
模拟函数是:
export async function x(data) {
cache.push(data);
console.log('HERE'); // this is printed
return data;
}
模块的 mock 在 __mocks__
目录中。
a.x()
调用模拟函数,但 a.x.mock
未定义。
这怎么可能? .mock
属性 在哪里?
所以,经过一些调查,我发现 __mocks__
目录中声明的函数默认情况下没有被 jest.fn()
包装。
我个人觉得这件事有点令人困惑。
所以你可以两者都做
function x(data) {
cache.push(data);
return cache;
}
jest.mock('a-a', () => ({x: x}))
如果您在同一个文件中执行所有操作,或者
jest.mock('a-a');
然后在 __mocks__/a-a.js
文件中
export const x = jest.fn(async (data) => {
cache.push(data);
return cache;
});