export interface MyState {
DetailData?: any;
BookID?: string;
GetDetail: () => void;
ShowWindow: (id: string) => void;
HideWindow: () => void;
}
export class MyComponent extends React.Component<{}, MyState> {
constructor(props: {}) {
super(props);
this.state = {
GetDetail: () => {
// external call here that returns DATA
this.setState({ DetailData: DATA });
}
ShowWindow: (id: string) => {
this.setState({ BookID: id }, () => this.state.GetDetail());
},
HideWindow: () => {
this.setState({
BookID: undefined,
DetailData: undefined,
});
},
};
}
}
У меня есть вышеуказанный компонент, где при вызове ShowWindow
обновляется состояние BookID с некоторым идентификатором, а в обратном вызове setState запускается this.state.GetDetail
.
Я пытаюсь проверить это в своем тесте Jest, вот так:
it("Should update state with the BookID and call GetDetail", () => {
const control = enzyme.mount(<MyComponent />);
const bookID= "ID123";
control.state().ShowWindow(bookID);
expect(control.state().BookID).toEqual(bookID);
});
Но это возвращает TypeError: callBack is not a function
ошибку. Как я могу исправить и правильно проверить это?