#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) })