测试 Apollo 客户端订阅

Posted

技术标签:

【中文标题】测试 Apollo 客户端订阅【英文标题】:Testing Apollo Client subscriptions 【发布时间】:2017-12-25 23:34:23 【问题描述】:

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

我想出的问题是:

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

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

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

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

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

有什么建议吗?

【问题讨论】:

你能分享一份复制品吗? 复制什么?自从我添加订阅后,我一直无法运行正常的测试 【参考方案1】:

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

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

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

【讨论】:

以上是关于测试 Apollo 客户端订阅的主要内容,如果未能解决你的问题,请参考以下文章

如何在 jest / apollo 客户端中捕获被拒绝的 graphql 订阅?

Apollo 订阅未在客户端监听新数据

Apollo 客户端订阅必须提供模式

如何在客户端 NextJS 中使用 Apollo GraphQL 订阅?

在 nextJS 上配置 apollo 客户端以进行订阅的问题

如何在 apollo 订阅服务器上获取客户端 IP 地址?