Jest mocking возвращаемое значение метода stati c подключенного компонента - PullRequest
0 голосов
/ 17 февраля 2020

Я тестирую свое приложение React с шуткой и энзимом, и все хорошо, пока я не проверил компонент класса, связанный с Redux. Я пошел дальше и проверил его, обернув компонент с, а затем поверхностно установив его. Однако я не могу смоделировать возвращаемое значение методов stati c, определенных в моем подключенном компоненте.

Ниже приведен пример кода:

const wrapper = shallow(
    <Provider store={store}>
        <TestComponent {...props}  />
    </Provider>
).dive();

Теперь, когда я пытаюсь смоделировать возвращаемое значение метода stati c, определенного в TestComponent, он не имеет никакого эффекта, он терпит неудачу:

TestComponent.myStaticMethod = jest.fn().mockReturnValue(true);

Интересная часть, если я экспортирую неподключенный компонент так же, как предложил в документах с редуктом приведенный выше синтаксис хорошо работает. Можно ли экспортировать неподключенный компонент только для тестирования? Я пытался издеваться до мелководья, а затем после него оба пути не сработали.

1 Ответ

0 голосов
/ 19 февраля 2020

connect возвращает новый компонент, поэтому вы не можете таким образом переопределить методы stati c обернутого компонента (что не очень хорошая идея, как сказал Эндрю)

Но предположим, что это то, что если вы хотите это сделать, вы можете смоделировать функцию connect из react-redux, чтобы вернуть исходный компонент

, а затем передать все реквизиты, полученные из mapStateToProps и mapDispatchToProps, в качестве стандартных реквизитов React

import MyComponent from './MyComponent';

jest.mock('react-redux' () => ({
   connect: () => Component => Component
}))

MyComponent.myStaticMethod = jest.fn().mockReturnValue(true);


shallow(<MyComponent {...props}/>)
...