У меня есть HOC для тестирования, во время мелкого монтирования я должен вызвать некоторые методы класса:
it('Should not call dispatch', () => {
const dispatch = jest.fn()
const WrappedComponent = someHoc(DummyComponent)
const instance = shallow(
<WrappedComponent
dispatch={dispatch}
/>,
).instance() as WrappedComponent
instance.someMethod()
expect(dispatch).toHaveBeenCalledTimes(0)
})
test работает нормально, но компилятор TS выдает ошибку
Cannot find name 'WrappedComponent'.
И этоверно, потому что WrappedComponent не является типом или классом, но если я удаляю строку
as WrappedComponent
, TS выдает ошибку
Property 'someMethod' does not exist on type 'Component<{}, {}, any>'.
Кроме того, он не компилируется, если я изменяю этострока как
as typeof WrappedComponent
someHoc описание:
import ...
interface State {
/*state*/
}
interface Props {
dispatch: Dispatch<Action>
/*props*/
}
export someHoc = <T extends {}>(
ChildComponent: React.ComponentClass<T>,
) => {
class Wrapper extends React.PureComponent<T & Props, State> {
someMethod = () => {
/*do smth*/
}
render() {
return (
<div>
<ChildComponent {...this.props} />
</div>
)
}
}
return Wrapper
}
Как мне набрать экземпляр HOC?Спасибо.