我有测试,我想像自己的函数一样重新定义Promise
。但当我尝试这样做时,我会得到像undefined
一样的Promise
。我不知道该怎么解决。我的测试块:
const data = 'server template';
const PromiseCorrect = Promise;
const PromiseMock = { lol: 12 };
Object.defineProperty(window, 'Promise', PromiseMock);
const file = await getFile({ template: { guid: 'guid' } }, undefined, false, () => true, () => true);
expect(file).toBe(data);
Object.defineProperties(window, 'Promise', { value: 'bar', configurable: true });
控制台输出:
console.log src/pages/WebTemplate/components/SpreadSheet/lib/utils.js:67
----> undefined
我意识到了一个问题。
const data = 'server template';
const PromiseCorrect = Promise;
const PromiseMock = { value: jest.fn() };
Object.defineProperty(window, 'Promise', PromiseMock);
const file = await getFile({ template: { guid: 'guid' } }, undefined, false, () => true, () => true);
expect(file).toBe(data);
Object.defineProperties(window, 'Promise', { value: 'bar', configurable: true });
这是正确的。