cy.request 不适用于 Cypress 插件文件?

crs*_*crs 7 cypress

 return cy.request('https://webiste.com/config.json').then( (appConfig) => {
  // save to Cypress.config
 });
Run Code Online (Sandbox Code Playgroud)

上面的代码抛出了这个错误:

插件文件导出的函数抛出错误。

我们调用了'C:\projects\nfe-credit-flow\cypress\plugins\index.js'导出的函数,但是它抛出了一个错误。

抛出了以下错误:

ReferenceError: cy 未在 Promise.then (C:\projects\nfe-credit-flow\cypress\plugins\index.js:74:4) at tryCatcher (C:\projects\nfe-credit-flow\node_modules\ bluebird\js\release\util.js:16:23) 在 Promise._settlePromiseFromHandler (C:\projects\nfe-credit-flow\node_modules\bluebird\js\release\promise.js:512:31) 在 Promise._settlePromise (C:\projects\nfe-credit-flow\node_modules\bluebird\js\release\promise.js:569:18) 在 Promise._settlePromise0 (C:\projects\nfe-credit-flow\node_modules\bluebird\js\ release\promise.js:614:10) 在 Promise._settlePromises (C:\projects\nfe-credit-flow\node_modules\bluebird\js\release\promise.js:693:18)

Mos*_*sho 4

插件运行 node.js 任务,而 cypress 在浏览器中运行。您应该使用 npm 包来request执行此操作。该config变量可以从插件访问,例如module.exports = (on, config) => { ...

由于 cypress 使用 request,因此最好具有相同的依赖项,而不是像 axios 这样的新依赖项。所以只是npm i request比:

const request = require('request');
request('https://webiste.com/config.json').then( (appConfig) => {
  config.whatever = appConfig.whatever
 });
Run Code Online (Sandbox Code Playgroud)

或者您可以使用merge函数(例如来自 loadsh)来覆盖config.