Я пытаюсь проверить подключенный к реактиву компонент-редуктор, а именно корзину, и не могу запустить приведенный ниже тест.Я хочу посмотреть, вызывается ли действие внутри обработчика щелчка для кнопки (импортировано из пакета material-ui).
Действие сопоставляется с реквизитами через mapDispatchToProps.
const mapDispatchToProps = dispatch =>
bindActionCreators(SelectItemGalleryActions, dispatch);
Я также использую
import configureStore from 'redux-mock-store';
для передачи ложного хранилища моему тестируемому компоненту.
Обработчик вызывается, но шпион не записывает, что он был вызван.Я пробовал большинство решений, которые я нашел здесь или на github (мелкие, симуляция, погружения, используя jest.fn () вместо spy () ...);У Вас есть какие-либо идеи?Я предполагаю, что вызывается другая ссылка на фиктивную функцию, которую я пытаюсь проверить.
Сначала я передаю фиктивный магазин и действие
const props = {
store: mockStore({ selectItemGallery: { cartItems: [{ name: 'one' }] } }),
removeAllItemsFromCartAction: spy()
};
const wrapper = mount(<Cart {...props} />);
После этого я ищу свою кнопку и моделирую щелчки по ней
const button = wrapper.find(Button).at(0);
button.prop('onClick')('test1');
button.prop('onClick')('test2');
Щелчки работают при запуске теста.Я получаю выходы console.log () из обработчика.
Ожидания
expect(props.removeAllItemsFromCartAction.called).toBe(true);
Однако это не называется.
Вот фактический обработчик
<Button
color="primary"
onClick={x => {
console.log(`onClick called on component with info ${x}`);
removeAllItemsFromCartAction();
console.log('removeAllItemsFromCartAction call is above me');
}}>
{t('Clear All')}
</Button>
На консоли отображается
Любые советы или идеи приветствуются.Спасибо.
Версии:
"enzyme": "^3.8.0",
"enzyme-adapter-react-16": "^1.7.1",
"jest": "^23.6.0",
"sinon": "^7.2.2",
"react": "^16.8.2"