#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
})