Задать вопрос
@AndreySFN

Как заставить работать jest с jsx?

Разрабатываю приложение через create-react-app. Очередная проблема с jest.
При запуске тестов выдаёт ошибку
5dd50fca8bd71493046868.png
И что самое интересное, этот возвращает функция, которая не тестируется, а просто находится в одном модуле с тестируемой
Код теста:
import {createLastOnlineDescription} from './OnlineStatus'
function twoChar(number){
    if(String(number).length==1)
        return `0${number}`
    else 
        return number
}

describe("createLastOnlineDescription for header online status test",()=>{
    describe('it shuld return `только что`',()=>{
        test('input now',()=>{
            const input = new Date()
            const result = createLastOnlineDescription(input)
            expect(result).toEqual('только что')
        })
        test('input 1 minute ago',()=>{
            const input = new Date(new Date()-60000)
            const result = createLastOnlineDescription(input)
            expect(result).toEqual('только что')
        })
        test('input 2 minute ago',()=>{
            const input = new Date(new Date()-120000)
            const result = createLastOnlineDescription(input)
            expect(result).toEqual('только что')
        })
        test('input 3 minute ago',()=>{
            const input = new Date(new Date()-180000)
            const result = createLastOnlineDescription(input)
            expect(result).toEqual('только что')
        })
        test('input 4 minute ago',()=>{
            const input = new Date(new Date()-240000)
            const result = createLastOnlineDescription(input)
            expect(result).toEqual('только что')
        })
    })


})


import React from 'react'

Код модуля:
class OnlineStatus extends React.Component{
    render(){


        return(
            <div/>
        )
    }

}

export function createLastOnlineDescription(lastOnlineDatetime){
    if(lastOnlineDatetime === 'online')
        return 'online'
    const timeDifference = new Date() - new Date(lastOnlineDatetime)
    if(timeDifference<300000)
        return `только что`
    if (timeDifference<3600000) //Если разница во времени между текущем и установленным меньше часа
        return `${timeDifference / 60000} минут назад` //Возвращаем значение в минутах
    if(timeDifference<4500000) //Если больше часа, но меньше часа и пятнадцати минут
        return `час назад`
    if(timeDifference<7200000) //Если боьше часа пятнадцати, но меньше двух часов
        return timeConverter(lastOnlineDatetime)

    function timeConverter(UNIX_timestamp){
        const a = new Date(UNIX_timestamp * 1000);
        const months = ['января','февраля','марта','апреля','мая','июня','июля','августа','сентября','октября','ноября','декабря'];
        const month = months[a.getMonth()];
        const date = a.getDate();
        const hour = twoChar(a.getHours());
        const min = twoChar(a.getMinutes());

        if (a.setHours(0,0,0,0) === (new Date()).setHours(0,0,0,0))
            return `сегодня в ${hour}:${min}`;
    


        function twoChar(number){
            if(String(number).length==1)
                return `0${number}`
            else 
                return number
        }
    }
}
  • Вопрос задан
  • 78 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    React-разработчик
    3 месяца
    Далее
  • Merion Academy
    Frontend-разработка на React
    4 месяца
    Далее
  • ProductStar
    React: отточите навыки интерфейсной разработки
    6 недель
    Далее
Пригласить эксперта
Ответы на вопрос 1
Robur
@Robur
Знаю больше чем это необходимо
вот тут есть пара вариантов, попробуйте
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Нижний Новгород
от 50 000 до 90 000 ₽
IT ATLAS Москва
от 200 000 до 250 000 ₽
ITK academy Казань
от 50 000 до 90 000 ₽