4

我最近在我的 React+Redux+ApolloGraphQL 应用程序中添加了对通过 WebSockets 订阅的支持。既然这样做了,我就不能再运行我的单元测试了。

我想出的问题是:

Unable to find native implementation, or alternative implementation for WebSocket!

在我运行测试的节点环境中,似乎没有可用的 WebSocket 实现。

此错误报告中有几个建议的解决方案涉及使用节点的“ws”库,但我无法使它们工作。要么我无法正确加载库,要么我可以但应用程序无法正常工作。

我正在考虑一种根据我所在的环境加载库的方法,但是:

  1. 我不知道该怎么做
  2. 我不知道这是否是正确的方法。

有什么建议么?

4

1 回答 1

2

你是如何运行你的测试的?就我而言,我使用的是 Jest,所以我在setupTests文件中放入了这段代码(在运行所有测试之前执行):

import WebSocket from 'ws';
Object.assign(global, {
  WebSocket,
});

这是必要的,因为对于不在浏览器中运行的测试,没有原生的 Web Socket 实现。

于 2018-04-12T15:41:29.940 回答