Рандомизированный ответ для каждого Cypress.ввод-вывод вызова cy.route()

#javascript #cypress

#javascript #cypress

Вопрос:

Использование Cypress.io для сквозного тестирования я пытаюсь смоделировать конечную точку API, в которой я хочу получить 0 с вероятностью 0,5 и 1 с вероятностью 0,5 для каждого вызова. Однако все мои вызовы получают один и тот же ответ, я добавил a console.log внутри функции, которую я передаю в response ( getRandomStatusAndScore ) , однако я вижу, что console.log вызывается только один раз, поэтому я предполагаю, что именно поэтому все вызовы возвращают одинаковые результаты cy.route() . Советы и идеи? `

 const getRandom = () => {
  console.log(Math.random());
  return Math.random() > 0.5
      ? { status: 1, score: Math.round(Math.random() * 100) }
      : { status: 0 };
  }
};
 
 cy.route({
      method: 'GET',
      url: '/api/status/*',
      response: getRandom(),
    });
 

Комментарии:

1. @blex к сожалению, это не сработало, консоль. журнал печатается только один раз, я предполагаю, что cy.route вызывается только один раз и имеет одинаковый ответ для всех вызовов

2. Зачем вам нужно воссоздавать случайное поведение в тестах? Было бы проще протестировать с известным значением или последовательностью значений.

3. Пожалуйста, объясните «визуализируйте прогресс». Также покажите больше теста — в частности, что вызывает вызовы API. Если тест выдает, скажем, щелчок () для каждого вызова, может быть возможно выдавать новый cy.route() перед каждым щелчком.

4. @eric99 Я понял твою точку зрения, фантастическая идея, триггер — это вызовы setInterval, поэтому я могу контролировать время в тесте: 1:

5. «триггер — это вызовы setInterval, поэтому я могу контролировать время в рамках теста» … с помощью cy.tick() .