Шутный тест Fat Arrow в классе отсутствует

Я пишу модульные тесты для компонента в Jest, и в настоящее время я просто тестирую функциональность.

Функция класса следующая:

class Comp extends Component {

    fetch = null;

    update = async () => {
        try {
            if (this.fetch)
                this.fetch.cancel();

            // Do stuff
            this.fetch = createFetch();

            await this.fetch();
        } catch (e) {
            console.info('Error in update!!!', e);
        }
    }

    render() {
        return(
             <div></div>
        )
    }
}

Шут-тест выглядит так:

test('Should call fetch.cancel if fetch exists', async () => {
    const spy = jest.fn();
    const comp = new Comp();

    comp.fetch = {cancel: spy};

    await comp.update();

    expect(spy).toHaveBeenCalledTimes(1);
});

Но я получаю эту ошибку из функции обновления:

Error in update!!! ReferenceError: _this3 is not defined

Кто-нибудь может мне с этим помочь?

Не могли бы вы попробовать без стрелочных функций?

Jeremy M. 09.03.2018 15:33

Остальная часть функциональности выйдет из строя. Кроме того, мне не нужно использовать fn.bind (this) в других частях компонента.

CherryNerd 09.03.2018 15:34

Я предполагаю, что проблема не в стрелочной функции в шутку, а в свойстве класса в вашем классе Comp. взгляните на это: babeljs.io/docs/plugins/transform-class-properties

luschn 09.03.2018 15:59

Когда вы получаете эту ошибку, когда вы запускаете свой тест или когда вы выполняете это в своем браузере?

VivekN 09.03.2018 17:05

@VivekN Это выполнение теста Jest, поэтому командная строка.

CherryNerd 13.03.2018 15:49

@luschn Это сработало! Ну, почти. По какой-то причине мне также потребовалось добавить {"spec": true}. Если вы можете вставить это в качестве ответа, я приму его :)

CherryNerd 13.03.2018 15:50

thanx, добавлена ​​информация о режиме спецификации

luschn 13.03.2018 16:09
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
7
1 258
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я предполагаю, что проблема не в стрелочной функции в Jest, а в свойстве класса в вашем классе Comp. Взгляните на это: http://babeljs.io/docs/plugins/transform-class-properties

Обновлено: он работал после установки режима спецификации: http://2ality.com/2017/01/babel-esm-spec-mode.html

Modules transpiled in this mode conform as closely to the spec as is possible without using ES6 proxies

Другие вопросы по теме