質問したいこと
React.js と Redux を使ってアプリケーションを作っているのですが、Action で store を更新するときに一緒に HTTP リクエストをするような実装になっています。
下のコードはこのような状態になっている例の1つです(変数の詳細などは質問に関係ないので省略させていただきます)。
javascript
1// Redux での Action の定義 2export const deletePaperEntry = (title) => { 3 let papers = store.getState().papersInTable; 4 let papersShown = store.getState().papersShown; 5 let newTable = []; 6 let newShownTable = []; 7 8 // HTTP request の部分 9 let url = AUTH_SERVER_URL + "/delete_paper"; 10 let body = JSON.stringify({ 11 username: SHA256(store.getState().userName), 12 title: title, 13 }); 14 let req = makeRequest(url, "POST", body); 15 fetch(req).then((response) => { 16 if (response.ok) { 17 return response.json(); 18 } 19 }); 20 21 // Redux で管理している state の更新 22 for (let i = 0; i < papers.length; i++) { 23 if (papers[i].title !== title) { 24 newTable.push(papers[i]); 25 } 26 } 27 28 return { 29 type: "DELETE_PAPER", 30 papersInTable: newTable, 31 papersShown: newShownTable, 32 }; 33};
このようなコードで現在なにか不具合が生じているということは無いのですが、Enzyme を使ってテストコードを書くときに、上の deletePaperEntry
が実行されたときに store に保存されている state が正しく更新されたかをチェックするテストが書きにくいと感じています。
これを解決するために store の更新と HTTP request を分離する必要があると考えているのですが、どのようにするのがベストプラクティスなのかわからず困っています。そもそも分離することが正しいことなのかも自信が無いです。
個人の趣味で開発をしており一般的に用いられている方法というものがわからないので詳しい方に教えていただきたいです。よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/19 12:27
2020/08/20 11:59
2020/08/22 08:42