gpt4 book ai didi

javascript - 如何在 karma/mocha 测试套件中模拟窗口对象属性?

转载 作者:行者123 更新时间:2023-11-29 21:16:51 27 4
gpt4 key购买 nike

我正在使用 karma 和 mocha 以及 React 的 TestUtils 来测试 React 应用程序。我正在测试的组件之一导入具有以下导出的模块:

export const OPTIONS = window.__OPTIONS__;

在我的测试中,我将组件渲染到 karma 中的虚拟 chrome 浏览器中。我这样做是通过: let tree = TestUtils.renderIntoDocument(<Component />);

“组件”的渲染函数引用了类似 OPTIONS.someOption 的东西当上面的测试运行时,它会爆炸并说 cannot read property 'someOption' of undefined.

我尝试“模拟”__OPTIONS__ before() 中的变量函数(在测试运行之前设置它的值),但即使在注销它并看到它实际上已设置之后,它在我的组件模块中的值仍然未定义。因此,似乎 webpack 在我的任何测试脚本实际运行之前捆绑了模块,因此它始终是未定义的。

有没有办法让window.__OPTIONS__设置为一个值,就好像它包含在 <script>window.__OPTIONS__ = {};</script> 中一样在我的页面顶部,从而在我的组件模块中正确导入一个值?

我不想深入探讨为什么要将变量附加到窗口对象,因为在这种情况下这是我无法避免的……这是 Salesforce 特定的原因。如果我可以完全避免使用该变量,我会的。

最佳答案

尝试在 beforeEach 中使用 __OPTIONS__ 将窗口对象添加到全局:

beforeEach(function() {
global.window = {
__OPTIONS__: {}
};
});

关于javascript - 如何在 karma/mocha 测试套件中模拟窗口对象属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39041921/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com