Пересмешить переменные файла и изменить поведение функции - PullRequest
0 голосов
/ 21 марта 2019

Я хочу написать тестовый пример для моего роутера. У меня есть объект const, который я хочу смоделировать во время теста. Как я могу изменить пользовательский объект в тестовом файле.

const user = {
  isAuthenticated: true
};

export const PrivateRoute = ({ component: Component, ...rest }) => {
  return (
    <Route
      {...rest}
      render={props =>
        user.isAuthenticated ? (
          <Component {...props} />
        ) : (
          <Redirect
            to={{
              pathname: "/login",
              state: { from: props.location }
            }}
          />
        )
      }
    />
  );
};

test.js

it("should return login route", () => {
    const route = <PrivateRoute path="/" component={()=>{}} />
    expect(route)..toMatchSnapshot();
});

it("should return home route", () => {
    const route = <PrivateRoute path="/" component={()=>{}} />
    expect(route)..toMatchSnapshot();
});

1 Ответ

0 голосов
/ 22 марта 2019

user должен быть доступен вне модуля для целей тестирования:

export const user = {
  isAuthenticated: true
};

Таким образом, его можно проверять в тестах

user.isAuthenticated = false;

Исходное значение должно быть сохранено для того, чтобыне перекрестные испытания:

let originalIsAuthenticated;

beforeEach(() => {
  originalIsAuthenticated = user.isAuthenticated;
});

afterEach(() => {
  user.isAuthenticated = originalIsAuthenticated;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...