TypeError: callBack не является функцией в тесте Jest для обновления состояния - PullRequest
0 голосов
/ 31 августа 2018
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 ошибку. Как я могу исправить и правильно проверить это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...