Где хранить API URL в Cypress? - PullRequest
0 голосов
/ 23 апреля 2019

Я новичок в Cypress и хочу знать, где я должен разместить все свои внешние URL-адреса?

На моем веб-сайте мы разделили URL-адреса для Интернета и еще один для API.

Допустим, они:

Я знаю, что могу поместить URL своего приложения в baseUrl в cypress.json, и я поместил все свои подкаталоги, например. /products /users в сеансе переменных env. Поскольку cy.visit() автоматически использует это baseUrl, теперь это хорошо для меня.

Что меня поразило, так это то, где правильно разместить URL-адреса API. Я не чувствую, как поставить полный путь, как:

не очень хорошая идея, поскольку я везде повторял API baseUrl. И если я разделю его на apiBaseUrl и подпункт /products, теперь мне придется самому создавать URL-адрес каждый раз, когда я хочу посмотреть его как

cy.route(`${Cypress.env('apiBaseUrl')}${Cypress.env('apiUrl').getProducts}`);

потому что мой apiBaseUrl не baseUrl. Это делает его еще сложнее, чем описанный выше метод.

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

Я нашел довольно простое решение.Просто поместите свой URL-адрес сервера API рядом с (веб-интерфейсом) кипариса 'baseUrl'.Мой cypress.json выглядит следующим образом:

{
  "baseUrl": "http://localhost:3001/",
  "backendBaseURL": "http://localhost:8080/api/v2",
  "env": {
    "someDummyEnvironemntVar": "fooBar"
  }, 
  "testFiles": "**/*.*",
  "watchForFileChanges": true
}

Оба могут быть доступны в любом месте Cypress тестов:

Cypress.env('someDummyEnvironemntVar')   => "fooBar"
Cypress.config('backendBaseURL')   => "http://localhost:8080/api/v2"
0 голосов
/ 23 апреля 2019

У нас есть отдельный файл с именем settings.js (cypress / settings.js). Который содержит конфигурацию для API:

export const apiUri = 'APIURL'
export const apiOauthSecret = 'TOKEN'

Чтобы использовать переменную apiUri, мы импортируем ее в файл, в котором мы хотим ее использовать:

import {apiUri, apiOauthSecret} from '../settings'

Cypress.Commands.add('apiRequest', (endPoint, options) => {
  const token = options.token || JSON.parse(window.sessionStorage.getItem('oauth-token') || '{}').accessToken
  if (token) {
    return cy.request({
      failOnStatusCode: false,
      ...requestOptions({
        ...options,
        token
      }),
      url: `${apiUri}/${endPoint}`
    })
  }
  return cy
})

Это дает возможность использовать apiUri и baseUrl рядом с друг другом

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