@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
        }
    }
}
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 1
Robur
@Robur
Знаю больше чем это необходимо
вот тут есть пара вариантов, попробуйте
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы