Реагировать на тестирование собственного провайдера - PullRequest
1 голос
/ 14 апреля 2020

Возьмем этого поставщика в качестве примера:

export const reducer = (state: AuthState, action: any): AuthState => {
  switch (action.type) {
    case "auth":
      return {
        ...state,
        authenticated: action.payload.authenticated,
      };
    default:
      return state;
  }
};

const AuthContextProvider: React.FC = ({ children }) => {
  const [state, dispatch] = React.useReducer(reducer, initialState);

  const signIn = async (username: string, password: string) => {
    try {
      await Auth.signIn({
        username,
        password,
      });
      dispatch({ type: "auth", payload: { authenticated: true } });
    } catch (error) {
      dispatch({ type: "auth", payload: { authenticated: false } });
    }
  };

  return (
    <AuthContext.Provider
      value={{
        ...state,
        signIn,
      }}
    >
      {children}
    </AuthContext.Provider>
  );
};

Я хочу проверить следующее:

  • Мне нужно убедиться, что Auth.signIn называется
  • Убедитесь, что редуктор вызывается и правильно обновляет состояние

Я изо всех сил пытаюсь реализовать это. Я понимаю, что могу заглушить метод signIn, принадлежащий объекту Auth, но как мне на самом деле справиться с этим в моем тесте? Я пытался следовать инструкциям asyn c на Jest, но я не могу его применить. Я не совсем уверен, как на самом деле проверить поставщика / потребителя . Например, я могу отрисовать его и создать простой компонент, который вызывает signIn и заглушить его с помощью Sinon?

Мне нужно руководство, я новичок в использовании ловушек React и раньше, сделал это с компонентами класса, которые упростили его так как я мог заглушить методы непосредственно из поверхностного визуализированного компонента, используя instance().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...