Тестирование аутентификации в react с помощью jest и enzyme

#reactjs #jestjs #enzyme

#reactjs #jestjs #enzyme

Вопрос:

Мне нужно написать тест в react с использованием jest и enzyme, и у меня есть следующий код:

 import React from 'react';
import { Route, Redirect } from 'react-router-dom';

const LoggedOutRoute = ({ component: Component, isLoggedIn, ...rest }) => (
    <Route render={() => (
        !isLoggedIn
            ? <Component {...rest} />
            : <Redirect to='/habits' />
    )} />
)

export default LoggedOutRoute;
 

с помощью следующего теста:

 import LoggedOutRoute from '.';
import { shallow } from 'enzyme';
import { component } from 'react';

describe('LoggedOutRoute', () => {
    let component;

    beforeEach(() => {
        component = shallow(<LoggedOutRoute />);
    })

    test('it renders', () => {
        expect(component.find('Route')).toHaveLength(1)
    })
    
    test('it exists', () => {
        expect(component.find('LoggedOutRoute').exists()).toBeFalsy();
    })

    test('it redirects to /habits link', () => {
    let links = component.find('Redirect');
    expect(links).toHaveLength(0)
    })

    test('It should return logged in for a false statement', () => {
        let LoggedOutRoute = component.find('Route')
        expect(LoggedOutRoute).toHaveLength(1)
    })

    test('')

})
 

Мне нужно написать тест для проверки ‘!isLoggedIn’, я не уверен, как это вообще структурировать, это для аутентификации, и когда я запускаю покрытие — строка 5 — это то, что меня подводит. Я не уверен точно, как протестировать троичный.

Комментарии:

1. Как мы должны знать, какую строку вы подразумеваете под 5-й?

2. путем подсчета от 1 до 5

Ответ №1:

В основном вы должны смонтировать его с помощью truthy / falsy prop и проверить, отображается ли он соответствующим образом: component = shallow(<LoggedOutRoute isLoggedIn={true} />);

Комментарии:

1. Рад помочь 🙂 Пожалуйста, отметьте это как правильный ответ / 1…

2. Привет, извиняюсь, это не сработало. Я не знаю, написал ли я это неправильно, но я покажу вам.

3. beforeEach(() => {component = shallow(<loggedoute isLoggedIn={true}/>); })

4. test(‘Он должен вернуть LoggedOutRoute для ложного утверждения’, () => { пусть LoggedOutRoute = component.find(‘Маршрут’) ожидает (LoggedOutRoute) . toHaveLength(1) })