2015-12-29 117 views
1

在反应应用程序中,我在fetch()中使用相对URL来将API请求发送到服务器。这在浏览器中运行良好,但是,当我运行单元测试用例(JEST)时,同构-fetch会抛出错误,指出只允许绝对URL。有什么办法来处理这个错误?我试图包装fetch()函数并使用它。事情是这样的:如何在运行JEST测试用例时将全局变量设置为true

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

在这里,我不知道如何isTesting设置为true,运行测试用例时。我试图把这个常量放在配置中。但是,它不工作。有没有其他解决方法?

回答

1

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

+0

感谢您的建议。但是,我将在很多异步操作创建者中使用上述函数,其中URL将被硬编码并且将是相对的。那么,我将如何单元测试异步动作创建者? – phkavitha

相关问题