Проверьте функцию внутри другой функции - PullRequest
0 голосов
/ 27 сентября 2019

Здравствуйте. Я пытался протестировать функцию внутри другой функции, которой требуется параметр вне второй функции.

export const DetailsView = ({ intl, object, onClose }) => {
//some code
    const getIsLogbookAllowed = () => {
        return (object &&
            object.driver )
    }

  //more code
}

Пытаюсь проверить эту функцию onLogbookReportModalClose, но я думаю, что когда я делаю экземпляр объекта переменной, он не читается, и он конвертируется как ноль.

Тестирование

test('should return \'false\' when there is no driver', () => {
    const wrapper = shallow(<DetailsView {...props} />)
    const instance = wrapper.instance()
    expect(instance.getIsLogbookAllowed()).toBe(true)
}

Ошибка

TypeError: instance.getIsLogbookAllowed is not a function

Есть предложения?

1 Ответ

0 голосов
/ 28 сентября 2019

У вас есть функциональное выражение без состояния, в нем не будет никаких методов экземпляра, поэтому его нельзя вызвать с помощью instance.getIsLogbookAllowed().В настоящее время getIsLogbookAllowed - это просто функция, объявленная в том смысле, что область действия компонента не может быть вызвана в вашем тесте.

Вы можете попытаться преобразовать свой компонент в компонент на основе классов

export class DetailsView {
//some code
    getIsLogbookAllowed = () => {
    const { object } = this.props
        return (object &&
            object.driver )
    }

  //more code
}

, что позволит вам вызывать ваш метод с instance.getIsLogbookAllowed() в тесте.В качестве альтернативы вы можете попробовать смоделировать событие и использовать его для запуска обработчика события onLogbookReportModalClose вместо попытки вручную вызвать методы экземпляра в ваших компонентах

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