はじめに
現在学習記録アプリのテストを書いているのですが、モックを使用した際に出たエラーの解決方法をまとめます。
問題
getAllRecords
とdeleteRecords
の2つの関数をモック化したのですが、 "Failed to fetch records: TypeError: (0 , supabaseFunctions_1.getAllRecords) is not a function"のエラーが出ました。
これは 「getAllRecordsが関数ではない」と言われています。
tsx
//モック化
const mockGetAllRecords = jest
.fn()
.mockResolvedValue([ new Record("1", "テスト", 3, "2024-03-16 09:30:48.200885")] )
jest.mock("../utils/supabaseFunctions", ()=>{
return{
getAllRecords:()=>mockGetAllRecords(),
}})
const mockDeleteRecords = jest
.fn()
.mockResolvedValue([]);
jest.mock("../utils/supabaseFunctions", () => {
return{
deleteRecords: () => mockDeleteRecords(),
}});
解決方法
jest.mock
~の部分がダブっていました。
こちらは複数モックを作成する場合も、1回のみ使用するものです。
tsx
//モック化
const mockGetAllRecords = jest
.fn()
.mockResolvedValue([ new Record("1", "テスト", 3, "2024-03-16 09:30:48.200885")] )
const mockDeleteRecords = jest
.fn()
.mockResolvedValue([]);
//1つにまとめる
jest.mock("../utils/supabaseFunctions", () => {
return{
getAllRecords:()=>mockGetAllRecords(),
deleteRecords: () => mockDeleteRecords(),
}});