Макет публичных методов дочернего компонента - PullRequest
0 голосов
/ 28 февраля 2019

Внутри Jest-теста я хочу смоделировать определенную функцию дочернего компонента, которая вызывается с ref.Например, что-то вроде:

const mockedFn = jest.fn();
Child.prototype.functionToMock = mockedFn;
const wrapper = mount(<Parent/>);
wrapper.find(Button).simulate("click");
expect(mockedFn).toBeCalled(); 

, где родительский компонент выглядит примерно так:

class Parent extends React.Component {
    private child: RefObject<Canvas> = React.createRef();
    ...
    render() {
        ...
        <Button onClick={this.onButtonClick}/>
        <Child ref={this.child}/>
    }

    private onButtonClick = () => {
        ...
        this.child.current.functionToMock();
    }
}

, а дочерний компонент выглядит примерно так:

class Child extends React.Component {
    ...

    public functionToMock = () => {
        ...
    }
}

Iне может смоделировать весь компонент Child, так как существуют другие тесты в зависимости от некоторых функций, содержащихся в Child.Любая помощь будет высоко ценится!

1 Ответ

0 голосов
/ 28 февраля 2019

Разобрался для потомков:

const mockedFn = jest.fn();
const wrapper = mount(<Parent/>);
wrapper.update();
const child = wrapper.find(Child).instance() as Child;
child.functionToMock = mockedFn;
wrapper.find(Button).simulate("click");
expect(mockedFn).toBeCalled();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...