Реакция Аполлона на тестирование вложенного запроса в мутации - PullRequest
0 голосов
/ 28 октября 2018

У меня есть контейнер React с вложенным запросом внутри мутации.Я могу проверить, что первоначальный рендер работает, используя MockedProvider для прохождения через смоделированные ответы для Mutation и Query.

Например, при начальном рендеринге я высмеиваю запрос на возврат сообщения, например "TEST MESSAGE" .

Когда я нажимаю кнопку внутри MyComponent, она вызывает mutationFn(), я проверил это с console.log, но Query не рендерится с новым сообщениемкак 'null'

Я хотел бы убедиться, что при нажатии кнопки вызывается обновление реквизита дочернего компонента из Query или функция возврата Mutation.Как это возможно с помощью Jest?

Тест (упрощенный):

  it('should pass message to message component', async (done) 
    => {
    await new Promise((resolve) => setTimeout(resolve));
    comp.update();

    comp.find('Button').simulate('click');
    await new Promise((resolve) => setTimeout(resolve, 10));
    comp.update();
    expect(comp.find(MyComponent.props('message')).toBeNull();
    done();
  });

Контейнер реагирования (упрощенный):

class MyContainer extends PureComponent {
  public render() {
    return (
      <Mutation mutation={MY_MUTATION}>
        {(mutationFn) => {
          return (
            <Query query={MY_QUERY}>
              {({ data, loading, error }: QueryResult<IAppUIQuery>) => {
                if (loading || error || !data || !data.appUI || !data.myQuery.message) {
                  return null;
                }
                const message = data.myQuery.message;

                return (
                  <MyComponent
                    message={message}
                    closeButtonClick={this.createCloseButtonHandler(mutationFn)}
                  />
                );
              }}
            </Query>
          );
        }}
      </Mutation>);
  }

  private createCloseButtonHandler = (mutationFn: MutationFn<null, IVars>) => {
    return () => {
      mutationFn({ variables: { message: null } });
    };
  }

Есть ли способзаставить Query перерисовать при клике?Или есть способ шпионить за mutationFn()?

...