Я пытаюсь смоделировать возвращаемые значения useSelector (), и эти тесты работали изначально; однако, некоторые изменения в репо привели к их провалу. Вот шаги, которые я предпринимаю, чтобы смоделировать значения для компонента.
Ниже приведено макетирование значений, которые обычно выдаются из
// In Component.tsx
const requestAccess = useSelector<RootState, IGenericNetworkAction>(
state => state.accessRequest as IGenericNetworkAction,
);
// In Component.test.tsx
const requestAccess = {
isFetching: false,
status: 200
} as IGenericNetworkAction
Затем я создаю mockStore - вместе с историей для переноса компонента в маршрутизаторе
// In Component.test.tsx
const mockStore = configureMockStore([thunk]);
const history = createMemoryHistory();
const store = mockStore({requestAccess: requestAccess});
Но при попытке смонтировать этот компонент с помощью энзима:
// In Component.test.tsx
const componentRender = mount(
<Provider store={store}>
<Router history={history}>
<Component />
</Router>
</Provider>,
);
Я получаю следующую ошибку, говоря, что requestAccess.status не определен:
TypeError: Cannot read property 'status' of undefined
85 | <button type="submit">Submit</button>
86 | </div>
> 87 | {requestAccess.status === 200 && !requestAccess.isFetching ? (
| ^
88 | <p>Your request has been submitted</p>
89 | ) : null}
90 | </Form>
Эти тесты работали раньше поэтому я не понимаю, почему они случайно решили сломаться, и как статус не определен, когда я предоставляю необходимую информацию в поддельный магазин. Я иду по этому поводу неправильно? Есть ли другой способ предоставить мои тесты с этими данными?