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

时间:2015-12-29 17:06:57

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

1 个答案:

答案 0 :(得分:1)

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