Я построил api компонента реагирования, который я хотел бы протестировать. API-интерфейс не зависит от хука реакции useState для тестирования. Таким образом, мой API получает состояние и setState из созданного мной пользовательского хука с именем useAPI:
const useAPI = (api, initialState) => {
const [state, setState] = useState(initialState)
return api({ state, setState })
}
, а сокращенный упрощенный пример моего API выглядит следующим образом:
const anAPI = ({state, setState}) => {
const name = state.name
const surname = state.surname
const updateName = (newValue) => {
setState(prevState => (
{...prevState, name: newValue}
))
}
}
Я бы хотел протестировать этот API без использования хуков. Тем не менее, я не уверен, как смоделировать функцию setState, чтобы я мог передать ее в API и заставить ее работать должным образом. Упрощенный файл теста может выглядеть следующим образом:
const state = {name: "", surname: ""}
const setState = someFunction...
const api = anAPI({state, setState})
it("updates name", () => {
api.updateName("john")
expect(api.name).toEqual("john")
})
Как должен выглядеть setState, чтобы этот тест работал?