我正在尝试对项目中的某些辅助功能进行完整的测试。我对这两个函数的第一个测试都检查是否声明了2个范围外变量,它们成功运行。
我想做的是,开玩笑来设置/模拟 wrapper
和layer
声明为函数范围之外的变量进行测试,但无论我多么努力,似乎都无法做到。
感谢并感谢您在这方面提供的任何帮助,因为我在编写测试方面相当菜鸟,更不用说 jest 的测试了。
jest.mock
,然后对2个函数进行了jest.requireActual
。jest.doMock
模块工厂来设置这两个变量,然后返回一个对象。模块: helpers / index.js
let wrapper; // Is created on runtime ergo initially undefined.
const layer = document.createElement('div');
layer.classList.add('layer');
const isElement = elm => {
if (!(elm instanceof Element)) {
throw new Error('Given element is not of type Element or is undefined!');
}
}
export const someFn = async () => {
wrapper = document.querySelector('.wrapper');
isElement(wrapper);
isElement(layer);
// Code that needs to be tested
// but cannot since when testing this function
// 'wrapper' and 'layer' are always undefined.
}
测试: helpers / index.test.js
// Helpers
import {someFn} from 'helpers';
describe('Method: someFn', () => {
test('should NOT throw', async () => {
await expect(someFn()).resolves.not.toThrow(); // but it does!
});
});
实际结果:Received promise rejected instead of resolved
预期结果:考虑到该函数所依赖的这些范围外变量,可以在测试时以某种方式设置/模拟它。