Как имитировать запрос на индексированную базу данных в библиотеке тестирования реакции/шутка?

#reactjs #react-testing-library

Вопрос:

У меня есть компонент, который показывает счетчик до тех пор, пока извлечение данных не будет завершено. Но я беру данные не с сервера, а из базы данных IndexedDB, используя библиотеку Dexie. Как я могу издеваться над такой просьбой. Мой код:

Эффект использования внутри компонента

   useEffect(() => {
      dispatch(setData())
    }, [])
   
    if(isDataLoadng) {
      return <Spinner/>
    }
    
    return Component
 

Громкое действие

 import db from '../../indexedDB/db'

    export const setData = createAsyncThunk(
      `setData`,
      async (_, { getState }) => {
          const data =await db.data.toArray()
          return {data}
      }
    )
 

индексированный файл бд

 import Dexie from 'dexie';


const db = new Dexie("dataDB");
db.version(1).stores({
  data: 'id, name,
});


export default db
 

Мой редуктор

 const initialState = {
  data: [],
  isDataLoading: true,
}

const crudSlice = createSlice({
  name: 'dataReducer',
  initialState: initialState,
  extraReducers: {
    [setData.pending]: (state) => {
      state.isDataLoading = true
    },
    [setData.fulfilled]: (state, action) => {
      state.data = action.payload.data
      state.isDataLoading = false
    },
  
  },
})
 

Моя попытка

Test.test.js

   import "fake-indexeddb/auto";
  import Dexie from "dexie";
            
   describe('Data tests', () => {
    beforeEach(async () => {
      //my code bellow doesnt mock request
       const db = new Dexie("dataDB");
       db.version(1).stores({ data: 'id,name'})
 
       const table1 = db.table("data");
       await table1.bulkGet([])
    
       //How mock getting data from db here instead of my attempt
     })