Несколько заглушек graphQl в одном тесте на кипарис - PullRequest
0 голосов
/ 03 августа 2020

Проблема: Я использую кипарис с angular и apollo graphQl. Я пытаюсь издеваться над графическим сервером, поэтому пишу свои тесты, используя собственные ответы. Проблема здесь в том, что все графы вызывают go на одной конечной точке, и что cypress еще не имеет полной сетевой поддержки по умолчанию, чтобы различать guish между этими вызовами.

Пример сценария: :

  • access / accounts / account123
  • при срабатывании API отправляются два вызова графа - запрос getAccountDetails и еще один с getVehicles

Пробовал:

  1. Использование одной заглушки конечной точки графика для каждого теста. Не работает, поскольку он заглушает все вызовы одной заглушкой.
  2. Изменение приложения таким образом, чтобы запрос добавлялся «на go» к URL-адресу, где я могу перехватить его в кипарисовом и, следовательно, иметь уникальный URL-адрес для каждого запроса. Невозможно изменить приложение.
  3. Моя единственная ставка, похоже, перехватывает вызов XHR и использует его, но я не могу заставить его работать Пробовал все варианты с использованием XHR, описанные здесь, но нет удачи (он выбирает только последнюю объявленную заглушку и использует ее для всех вызовов) https://github.com/cypress-io/cypress-documentation/issues/122.

Ответ на этот вопрос использует Fetch и поэтому не применяется: Mock Speci c запрос graphql в cypress при запуске тестов e2e

У кого-нибудь есть идеи?

Ответы [ 2 ]

0 голосов
/ 04 августа 2020

Думаю, вы можете использовать псевдонимы, как это уже было предложено в ответе @Luis выше, вот так. Это тоже указано в документации. Единственное, что вам нужно здесь использовать, - это несколько псевдонимов, так как у вас есть несколько вызовов и вам нужно управлять последовательностью между ними. Пожалуйста, поправьте меня, если я понял ваш вопрос иначе ??

cy.route({
  method: 'POST',
  url: 'abc/*',
  status: 200.
  response: {whatever response is needed in mock }
}).as('mockAPI')

// HERE YOU SHOULD WAIT till the mockAPI is resolved. 
cy.wait('@mockAPI')
0 голосов
/ 04 августа 2020

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

...