启用缓存时模拟服务人员和 Apollo 客户端的最佳实践
Posted
技术标签:
【中文标题】启用缓存时模拟服务人员和 Apollo 客户端的最佳实践【英文标题】:Best practices with mock service workers and Apollo Client when caching enabled 【发布时间】:2021-05-03 15:43:13 【问题描述】:我有一个使用 Apollo 客户端的应用程序,当我添加 MSW 时,我发现缓存正在返回带有空响应的陈旧请求。 MSW 团队表示,最佳实践是在运行测试时清除每个请求的缓存,但我也想在模拟模式下运行我的应用程序以进行手动测试。
在运行启用了模拟的应用时执行以下操作似乎可行,但必须将这样的模拟逻辑放入应用中似乎违反直觉。还有人遇到这种情况吗?
const [
fetchUser,
loading, error, data, refetch, networkStatus ,
] = useLazyQuery(QUERY_GET_USER,
fetchPolicy: API_MOCKING ? 'network-only' : 'cache-and-network',
nextFetchPolicy: API_MOCKING ? 'network-only' : 'cache-first',
);
【问题讨论】:
运气好吗?遇到同样的事情。 不走运,使用上面的代码在模拟模式下运行应用时关闭缓存 【参考方案1】:我无法评论你原来的问题,所以我会做一个回答,让你知道你至少可以覆盖默认的 fetchPolicy,即使在 apollo-boost 中也是如此。这可能会使您的测试的 fetchPolicy 设置为“仅限网络”不那么痛苦。
参考:https://github.com/apollographql/apollo-client/issues/3900#issuecomment-420830472
【讨论】:
以上是关于启用缓存时模拟服务人员和 Apollo 客户端的最佳实践的主要内容,如果未能解决你的问题,请参考以下文章