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にクローズされました