Closed13
apollo clientのmock providerを使用したテストでモックが効かなくなる問題
fetch policy
fetch policyの如何でapolloのモックが効かなくなる問題
fetchPolicy: "cache-and-network",
がクエリに指定されているとapolloでのモックが効かなくなった
はずしたら動く
cache-and-networkは
- キャッシュとサーバーへのリクエストどちらも見る
- サーバーのデータが違えばcacheも更新
- なんかキャッシュの整合性保ちつつ早いらしい(ほんまか?)
- キャッシュデータをまず返して、ネットワークから返ってきてデータが違ったらそれを流すみたいな感じかな
ちなみにモックの方法はmock provider
これあれか、cache-and-networkが最初にcache上のundefinedを即座に返すからそれで初回のデータとしてundefinedが返ってきてるみたいなかんじか
nextFetchPolicy: "cache-and-network",
にしたら動く(それはそう感がある
まあ最初のキャッシュがundef返してるで正しいっぽいな
MockProviderにはdefaultOptionsというのが存在するが、上書きはしてくれないっぽいな
{
query: {
fetchPolicy: "no-cache",
},
},
を指定してもundefを返す挙動は変わらなかった
何はともあれnextFetchPolicyを使えば解決するっぽい
初回でネットワーク待っちゃうけど
もしくはなんかのdomがrenderされるまでテストの中で待つか
このスクラップは2021/12/23にクローズされました