javascript - 运行 JEST 测试用例时如何将全局变量设置为 true

标签 javascript reactjs jestjs

在 React 应用程序中,我在 fetch() 中使用相对 URL 将 API 请求发送到服务器。这在浏览器中运行良好,但是,当我运行单元测试用例(JEST)时,isomorphic-fetch 会抛出错误,表示只允许绝对 URL。有什么办法可以处理这个错误吗?我正在尝试包装 fetch() 函数并使用它。像这样的事情:

    function customNodeFetch(url, options) {
        var finalURL = (isTesting)? 'http://localhost:3000/' : url;
        return fetch(finalURL, options);
     }

在这里,我不知道在运行测试用例时如何将 isTesting 设置为 true。我尝试将常量放入配置中。但是,它不起作用。还有其他办法可以解决吗?

最佳答案

我建议不要使用全局变量来修改单元测试代码的行为,而是注入(inject)测试值。您在示例中显示的函数已经接受 url 作为参数,因此只需在运行测试时将 localhost 传递给该函数,并在代码运行时将真实的 url 传递给该函数即可。通过 fork 仅用于测试的逻辑,您将使单元测试无效,因为它们不再测试您的应用在现实场景中采用的代码流。

关于javascript - 运行 JEST 测试用例时如何将全局变量设置为 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34515620/

相关文章:

javascript - 如何在 Enzyme React 中模拟按钮单击?

javascript - 为什么使用 ReactJS,我无法制作对单击使用react的复选框?

javascript - 在 REACTJS 中的函数中显示渲染结果

unit-testing - 与 Jest 的竞争条件

html - 如何验证 typescript 中输入标签的类型 "target.dataset"属性

javascript - 验证在动态添加的字段上至少选中一个复选框

javascript - 如何通过鼠标滚动控制html视频?

javascript - 具有或不具有全局变量的 Angular.js 组织

javascript - 删除用户时如何清除本地存储

mongodb - Mongoose 聚合查询在 Jest/Mockgoose 测试中失败,在其他地方有效