Я использую приложение Create React.
Я пытаюсь смоделировать поведение isLoggedIn
в моем компоненте, чтобы получить покрытие всех строк кода.
Для этого ключ localStorage: user
должен существовать с data.accessToken
Я попытался установить данные localStorage в тесте, но он не работает. этот же метод фактически работает в функции isLoggedIn
и генерирует 100% покрытие линии.
Функция isLoggedIn
export const isLoggedIn = () => {
const userFromLocalStorage = store('user');
return _get(userFromLocalStorage, 'data.accessToken', false);
};
PrivateRoute.js:
const PrivateRoute = ({ component: Component, ...rest }) => (
<Route
{...rest}
render={props =>
isLoggedIn() ? (
<Component {...props} />
) : (
<Redirect to={{ pathname: 'login' }} />
)
}
/>
);
PrivateRoute.spec.js
import store from 'store2';
describe('PrivateRoute Logged In', () => {
store('user', {
data: {
accessToken: 'dfg',
},
});
const ShallowPrivateRoute = shallow(
<PrivateRoute path="/" name="Home" component={TestComponent} />
);
it('should cover logged in case', () => {
expect(ShallowPrivateRoute).toBeDefined();
});
});
Есть ли способ, которым я могу смоделировать isLoggedIn
функцию, возвращающую true только для одного теста ??
Каков наилучший способ проверить такое поведение?