JS defineProperty集未定义



我有测试,我想像自己的函数一样重新定义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 });

这是正确的。

最新更新