Модульное тестирование Apollo, ошибка на мутации - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь смоделировать мутацию graphql для моих модульных тестов.Я использую MockedProvider, но получаю сообщение об ошибке: «UnhandledPromiseRejectionWarning: Ошибка: больше нет поддельных ответов на запрос: мутация LoginMutation»

Я много гуглил и копировал, вставлял все водин файл, чтобы не было проблем с импортом

const LOGIN_MUTATION = gql`
    mutation LoginMutation($email: String!, $password: String!) {
    login(email: $email, password: $password) {
      token
      user {
        name
      }
    }
  }
`;

const mocks = [
  {
    request: {
      query: LOGIN_MUTATION,
      variables: { email: 'test@test.com', password: 'password' },
    },
    result: {
      data: {
        login: {
          token: 'fakeToken',
          user: {
            name: 'Testy McTestface'
          }
        }
      }
    }
  }
]

describe('LoginForm', () => {
  let wrapper;
  let store;

  beforeEach(() => {
    store = mockStore(initialState);
  });

  it('triggers the doLogin action creator after the graphql call', () => {
    const mockDoLogin = jest.fn()
    let mockedWrapper = mount(
      <MockedProvider mocks={mocks} addTypename={false}>
        <Provider store={store}>
          <LoginForm doLogin={mockDoLogin} />
        </Provider>
      </MockedProvider>,
    );
    mockedWrapper.find('#loginButton').simulate('click')
    expect(mockDoLogin).toHaveBeenCalledTimes(1)
  })
});

Я ожидаю, что этот тест пройден (тег, который ищется в обертке, является правильным), но я получаю ошибку, описанную выше, поэтому я 'Я предполагаю, что проблема связана с моим издевательством, но мне это нравится?

Извините, если это что-то смехотворно очевидно, но я смотрю на это уже несколько часов.

1 Ответ

0 голосов
/ 12 февраля 2019

Хотели бы вы дать easygraphql-tester ?Он будет высмеивать запрос для вас, но также, если вы хотите установить некоторые приборы, вы можете установить их тоже!

Вы можете передать схему, чтобы использовать ее!

import EasyGraphQLTester from 'easygraphql-tester'

const tester = new EasyGraphQLTester(schema)

const LOGIN_MUTATION = gql`
    mutation LoginMutation($email: String!, $password: String!) {
    login(email: $email, password: $password) {
      token
      user {
        name
      }
    }
  }
`;

const mocks = [
  {
    request: {
      query: LOGIN_MUTATION,
      variables: { email: 'test@test.com', password: 'password' },
    },
    result: tester.mock({
      query: LOGIN_MUTATION,
      variables: { email: 'test@test.com', password: 'password' }
    })
  }
]

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