测试 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 订阅?
如何在客户端 NextJS 中使用 Apollo GraphQL 订阅?