У меня есть компонент ловушки React, который событие onChange будет выполнять функцию ayn c -await и несколько диспетчеризаций. В моем тесте макета не было обнаружено, что store.dispatch
вызывается, если я поместил свой await function
вперед для любой отправки он будет обнаруживать вызов только в том случае, если я поместил диспетчер перед функцией ожидания, например,
const onChange = async (userId) => {
await someAsyncFn(userId);
dispatch(selectUser(userId)); //not detected
dispatch(selectGroup(userId); //not detected
};
--Test.js
expect(store.dispatch).toHaveBeenCalledTimes(2) ---failed, only receive 0 times
, но если бы я разместил ожидание после отправки, тестовый пример прошел
const onChange = async (userId) => {
dispatch(selectUser(userId)); //detected
dispatch(selectGroup(userId); //detected
await someAsyncFn(userId);
};
--Test.js
expect(store.dispatch).toHaveBeenCalledTimes(2) ---passed receive 2 times
Однако, если я разместил ожидание в промежутке между отправкой, обнаруживается только вышеприведенная отправка
const onChange = async (userId) => {
dispatch(selectUser(userId)); //detected
await someAsyncFn(userId);
dispatch(selectGroup(userId); //not detected
};
--Test.js
expect(store.dispatch).toHaveBeenCalledTimes(2) ---failed, only detect selectUser being called
Когда я запускаю свое приложение, между этими тремя случаями нет реального различия в поведении пользовательского интерфейса , обе отправки произошли так же, как и моя функция ожидания, но я в некотором замешательстве, почему мой контрольный пример не сможет обнаружить мою отправку? Можно ли как-нибудь обойти или принудительно разрешить мой метод await из контрольного примера?