React.js - { loadingElement } не является функцией

140
30 сентября 2019, 01:30

При запуске yarn test возникает множество ошибок, что функция loadingElement, ей не является TypeError: loadingElement is not a function.

Существует файл minicart.js в котором я определяю функцию loadingElement:

loadingElement = bool => {
    this.setState({
        isLoading: bool
    });
};

После чего, я передаю ее вниз: (классу ProductList)

get productList() {
    const { cart, removeItemFromCart } = this.props;
    const { cartCurrencyCode, cartId } = this;
    return cartId ? (
        <ProductList
            removeItemFromCart={removeItemFromCart}
            loadingElement={this.loadingElement} // Function loadingElement
            showEditPanel={this.showEditPanel}
            currencyCode={cartCurrencyCode}
            items={cart.details.items}
            totalsItems={cart.totals.items}
        />
    ) : null;
}

После чего, я ее принимаю в классе product, и пользуюсь следующим образом:

removeItem = () => {
    const { removeItemFromCart, loadingElement, item } = this.props;
    this.setState({
        isOpen: false
    });
    loadingElement(true);
    removeItemFromCart({
        item: item,
        loadingElement: loadingElement
    });
};

И на данном этапе loadingElement(true);, возникает одна из восьми ошибок TypeError: loadingElement is not a function.

Желаемый результат

  1. Почему все работает, все функции выполняются, но yarn test говорит иначе?
  2. Понять, и исправить все ошибки, которые происходят при запуске теста.
Answer 1

А Вы в тесте передаете loadingElement props? Могу поспорить что нет.

Как решить?

Нужно во всех местах всегда делать проверки, именно для этого Вы и пишите тесты чтобы обнаруживать эти проблемы:

loadingElement && loadingElement(true);
READ ALSO
Как сохранить состояние чекбокса в localStorage?

Как сохранить состояние чекбокса в localStorage?

Есть код который добавляет значение для чекбокса в localstorage

126
Плавная прокрутка якорей

Плавная прокрутка якорей

Всем привет, Я использую этот простенький код для плавного скролла по якорям и всё это чудесно работает:

108
Неправильное сложение цифр всех input

Неправильное сложение цифр всех input

Здраствуйте! У меня такое заданиеНа странице есть несколько form, в form несколько input, в input числа

113