【问题标题】:How to set a global variable to true when running JEST test cases运行 JEST 测试用例时如何将全局变量设置为 true
【发布时间】:2015-12-29 17:06:57
【问题描述】:

在 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。我试图将常量放入配置中。但是,它不起作用。有没有其他办法解决?

【问题讨论】:

    标签: javascript reactjs jestjs


    【解决方案1】:

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

    【讨论】:

    • 感谢您的建议。但是,我将在许多异步操作创建者中使用上述函数,其中 URL 将被硬编码并且是相对的。那么,我将如何对异步操作创建者进行单元测试?
    猜你喜欢
    • 2022-12-10
    • 2011-11-18
    • 2018-07-21
    • 2019-11-26
    • 1970-01-01
    • 2020-12-16
    • 2022-08-24
    • 2018-12-15
    • 2016-05-28
    相关资源
    最近更新 更多