Я пытаюсь протестировать компоненты React с помощью Enzyme + Sinon spies.Мой код реакции использует синтаксис инициализатора свойства в экземпляре моего компонента:
class FixedButton extends React.Component {
handleMouseOver = (e) => {
const { fixedButtonHover = _fixedButtonHover } = this.props;
const { backgroundColor, color } = fixedButtonHover;
e.target.style.backgroundColor = backgroundColor;
e.target.style.color = color;
}
}
И я пытаюсь выяснить, как шпионить за функцией handleMouseOver, хотя из того, что я понимаю, поскольку контекст связан сэкземпляр, а не свойство прототипа, я не могу за ним шпионить.
Я знаю, что функция вызывается, и я знаю, что могу заставить шпионов работать должным образом, изменив мой синтаксис на стандартный стиль свойств.Я также знаю, что у смонтированного экземпляра компонента есть метод как свойство.
Это один из тех случаев, когда эти два просто не будут работать вместе, или есть хитрость, которую я не смог увидеть?
Редактировать : вот как я попробовал предлагаемое решение, но spy.calledOnce возвращает false, как и spy.called :
test('FixedButton component methods are called as expected', t => {
const wrapper = mount(<FixedButton />);
const instance = wrapper.instance();
const spy = sinon.spy(instance, 'handleMouseOver');
const button = wrapper.find('button');
button.simulate('mouseover');
t.is(spy.calledOnce, true);
})