Я новичок в Jest и Enzyme, и я наткнулся на проблему:
У меня есть компонент, который отображает детей, а также вызывает метод этих детей. Я добиваюсь этого, используя refs. Я называю эти функции примерно так:
somefunction = () => {
this.myReference.current.childFunction();
this.doSomethingOther();
}
Теперь я хочу протестировать функцию некоторая функция. Я хочу проверить, вызывалась ли функция doSomethingOther. Используя неглубокий рендер, я не могу этого добиться. Тест был бы успешным, если бы this.myReference.current.childFunction(); не вызывали. Jest не может этого знать, потому что он отображает только поверхностную информацию и, следовательно, выдает ошибку.
Возможно, мне не хватает полного понимания. Интересно, есть ли у кого-нибудь идея протестировать эту функцию без использования mount.
Ссылки не работают с мелким рендерингом. Вам придется как-то издеваться над this.myReference, как говорит @ShubhamGupta, чтобы он работал.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Взгляните на приведенный ниже код, где я неглубоко отрисовываю компонент, а затем получаю экземпляр класса и имитирую необходимые функции. Теперь, когда мы вызываем некоторая функция, мы проверяем, был ли вызван doSomethingOther. (Предполагается, что вы используете шутку + фермент)
const wrapper = shallow(<Comp />);
const inst = wrapper.instance();
inst.myReference = {
current: {
childFunction: jest.fn()
}
}
inst.doSomethingOther = jest.fn();
inst.somefunction();
expect(inst.doSomethingOther).toHaveBeenCalled();
Вместо childFunction: jest.fn(); вы должны использовать childFunction: jest.fn()**,** . В противном случае все работает нормально, спасибо!
Разве насмешки над this.myReference не решат вашу проблему?