【问题标题】:Cypress.io: Is is possible to set global variables in Cypress and if yes; how?Cypress.io:是否可以在 Cypress 中设置全局变量,如果可以;如何?
【发布时间】:2019-06-12 16:03:41
【问题描述】:

我正在尝试在 Cypress.io 中设置一个全局变量(不是全局 ENV 变量)。我想抽象出一个 url,我将一遍又一遍地使用 AND 一些我可以在多个文件(不仅仅是一个)中使用的东西。

另外,我不想将其设置为baseurl。我已经有了那套,我想不管它。

谁能帮我解决这个问题?

【问题讨论】:

    标签: javascript cypress


    【解决方案1】:

    我最近在 github 上的另一个博客中找到了答案:https://github.com/cypress-io/cypress/issues/1121

    但是这个博客中的答案是我的 Brian Mann 回答的......

    “TL;DR - 只使用模块,而不是全局变量。

    赛普拉斯只是 JavaScript。关于结构化文件的所有基本原则都适用于赛普拉斯,就像它适用于您自己的应用程序文件一样。

    在这种情况下,您不断提及变量。变量是在特定文件中定义的东西,绝不是全局的。这意味着它们不可能被共享。变量可根据定义它们的本地范围进行访问。

    为了使它们具有全局性,您必须将它们附加到一个全局对象:window.但是,没有理由这样做,赛普拉斯自动内置了模块支持。这使您可以将函数导入每个规范文件,从而使它们比使用全局变量更有条理和更明显。

    我们在这里有这个食谱:https://docs.cypress.io/examples/examples/recipes.html#Node-Modules"

    我希望这可以帮助 Stackoverflow 上的其他人回答这个问题!

    【讨论】:

    • 非常感谢您研究答案。尽管如此,我还是想注入一些全局常量,例如 cypress 工具似乎已经与“cy”、“describe”、“it”等有关。
    【解决方案2】:

    这可以比这更容易完成: 在你的 cypress.json 添加

    "env": {
       "YourVarName":"YourVarValue"
    }
    

    在您的代码中,您可以使用以下命令访问您的 var:

    const myGolabalVar = Cypress.env("YourVarName")
    

    这就是你所需要的

    【讨论】:

      【解决方案3】:

      您可以使用 cypress.json 文件并在那里设置环境值。如果您不想使用 .env 值,那么您可以创建任何您喜欢的常量文件并通过 cypress index.js 文件将其导入。

      创建一个常量文件, 例如,cypress/constants.js 里面有一个json对象:

          export const constants = {
        VALUEA: 'my text for value A',
        VALUEB: 'example value b'
      }
      

      支持/index.js 添加对您的 constants.js 文件的引用:

      import '../constants';
      

      这会自动将常量字典导入到您的所有规范文件中。

      要在规范文件中引用常量,您所要做的就是使用“constants.VALUEA” 例如:

      cy.get('#button-label-id).should('contain.text', constants.VALUEB);
      

      【讨论】:

        猜你喜欢
        • 2017-03-10
        • 2011-02-10
        • 2015-09-27
        • 2013-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-16
        • 1970-01-01
        相关资源
        最近更新 更多