测试Apollo客户端订阅

时间:2017-07-20 10:16:15

标签: unit-testing graphql subscription apollo apollo-client

我最近添加了对通过WebSockets订阅到我的React + Redux + ApolloGraphQL应用程序的支持。由于这样做,我不能再进行单元测试了。

我想出的问题是:

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

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

this bug report中有一些建议的解决方案涉及将'ws'库用于节点,但我无法使它们工作。我无法正确加载库,或者我可以,但应用程序无法正常工作。

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

  1. 我不知道该怎么做
  2. 我不知道这是不是正确的做法。
  3. 有什么建议吗?

1 个答案:

答案 0 :(得分:0)

你是如何运行测试的?在我的情况下,我正在使用Jest,所以我把setupTests文件(在运行所有测试之前执行)放在这段代码中:

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

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