Как использовать ту же среду Node Environment, что и Axios с Cypress - PullRequest
0 голосов
/ 24 октября 2018

У меня есть веб-сайт, где вы отправляете форму, которая начинает работу на сервере.Чтобы начать эту работу, вы отправляете запрос, а в ответ получаете обратно идентификатор работы.Затем мой веб-сайт отправляет запросы на получение статуса этой работы, пока она не будет завершена.

С кипарисом я хочу дождаться завершения задания, чтобы перейти к следующему шагу.Для этого мне нужно знать, когда работа будет завершена.Я использую axios для выполнения запросов и хочу добавить перехватчик ко всем запросам, которые делает axios, чтобы я мог искать тот, который создает задание, чтобы получить его идентификатор, а затем искать запросы, которыеполучить его статус, чтобы я мог знать, когда он закончится.

Я пытался это сделать, но когда я импортировал экземпляр axios из файла запроса, я заметил, что любые файлы console.logs, которые есть в моем файле запроса, печатаются дважды.Это подразумевает, что когда cypress импортирует переменную, он снова запускает файл, что означает, что cypress не имеет доступа к экземпляру axios, который фактически делает запросы, а вместо этого к новому экземпляру, используемому только кипарисом.

Когда я печатаю process.env.NODE_ENV, он печатает дважды с двумя разными значениями cypress environment difference

Я знаю, что могу печатать переменную env с Cypress.env('NODE_ENV'), но ясно, что кипарис неиспользуя ту же переменную scope / enviornment, что и мой файл API.Я также попытался установить для моего cypress.json значение

{
    "env" : {
        "NODE_ENV" : "development"
    }
}

и запустить его в верхней части моего тестового файла process.env.NODE_ENV = Cypress.env('NODE_ENV'), но это не сработало.Я также попытался export NODE_ENV = development в терминале, где я звоню кипарис, но это не сработало.Также это скрипт из моего package.json, который я использую для вызова Cypress "cypress": "./node_modules/.bin/cypress open", и я использую Cypress 3.1.0 и узел 9.5.0

Возможно ли вообще Cypress взаимодействовать с переменными?Я просто неправильно установил свой кипарис или узел?

1 Ответ

0 голосов
/ 26 октября 2018

Cypress предоставляет собственный доступ к javascript, но только через cy.window (), поэтому бесполезно пытаться «объединить» две области.Обратите внимание, что cy.window () требует выставления переменных через окно.Например, вы можете поместить свой экземпляр axios в окно, используя

const axiosMain = axios.create()
window.axiosMain = axiosMain

, а затем вы можете получить доступ к axiosMain в кипарисе, используя

cy.window().then(win => {
    const { axiosMain } = win
    //... add interceptors here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...