赛普拉斯在哪里存储API URL?

时间:2019-04-23 11:33:25

标签: javascript cypress

我是赛普拉斯的新手,想知道应该将所有外部URL放在哪里?

在我的网站中,我们为Web分隔了URL,为API分隔了另一个URL。

假设他们是:

我知道我可以将应用程序URL放在baseUrl的{​​{1}}中,并且我已经将所有子目录都放在了例如cypress.json /products在环境变量会话中。因为/users自动利用了这个cy.visit(),所以现在对我有好处。

我现在想到的是正确放置API URL的位置。我不想像把全路径这样:

不是一个好主意,因为我到处都重复了API baseUrl。而且,如果我将其拆分为baseUrl和子部分apiBaseUrl,那么现在每次我想观看

时,我都必须自己构建URL。
/products

因为我的cy.route(`${Cypress.env('apiBaseUrl')}${Cypress.env('apiUrl').getProducts}`); 不是apiBaseUrl。这使它比上述方法更加困难。

有什么建议吗?

2 个答案:

答案 0 :(得分:0)

我们有一个单独的文件,名为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

答案 1 :(得分:0)

我找到了一个非常简单的解决方案。只需将您的API后端URL放在(网络前端)赛普拉斯'baseUrl'旁边。我的cypress.json看起来像这样:

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

在赛普拉斯测试中均可在任何地方访问这两者:

Cypress.env('someDummyEnvironemntVar')   => "fooBar"
Cypress.config('backendBaseURL')   => "http://localhost:8080/api/v2"