我是赛普拉斯的新手,想知道应该将所有外部URL放在哪里?
在我的网站中,我们为Web分隔了URL,为API分隔了另一个URL。
假设他们是:
我知道我可以将应用程序URL放在baseUrl
的{{1}}中,并且我已经将所有子目录都放在了例如cypress.json
/products
在环境变量会话中。因为/users
自动利用了这个cy.visit()
,所以现在对我有好处。
我现在想到的是正确放置API URL的位置。我不想像把全路径这样:
不是一个好主意,因为我到处都重复了API baseUrl。而且,如果我将其拆分为baseUrl
和子部分apiBaseUrl
,那么现在每次我想观看
/products
因为我的cy.route(`${Cypress.env('apiBaseUrl')}${Cypress.env('apiUrl').getProducts}`);
不是apiBaseUrl
。这使它比上述方法更加困难。
有什么建议吗?
答案 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"