【问题标题】:How to set variable and access from cypress framework如何从 cypress 框架设置变量和访问
【发布时间】:2021-01-06 16:08:50
【问题描述】:

我正在使用 cypress 框架来测试节点应用程序。我想检查变量是否设置为“SUCCESS”。最初它被设置为“FAILURE”,但从 cypress exec 中它被设置为“SUCCESS”。但是当我调用该函数时,它仍然是“失败”。有人可以帮我理解我在哪里做错了。

cypress\support\returnStatus.js

module.exports = function() {

    this.returnStatus = "FAILURE";

   this.SuccessMsg =  function() {
      cy.exec('echo hello',  { log: true, failOnNonZeroExit: false }).then((output) => {
                    this.returnValue = "SUCCESS";
                  
          });

   
   }
}

cypress\integration\checkReturnValue.spec.js

let Status = require('../support/returnStatus');
let helper = new Status();

describe("Check return value", function(){
    it("should check latest value", function(){
        let reply =  helper.SuccessMsg();
        console.log(reply);//still it prints /*FAILURE*/
        
    })
});

【问题讨论】:

  • 这无法从您提供的代码中重现。 this.SuccessMsg = ... 没有在导出上公开函数,所以 helper.SuccessMsg() 是未定义的。请发布说明问题的代码。
  • 嗨@AloysiusParker,感谢您指出,我已经修改了代码

标签: javascript node.js cypress


【解决方案1】:

这里有一些异步的东西,因为cy.exec 产生了一个子进程。

通常您会等待异步调用,但 Cypress 命令仅返回链接器(它们并不真正遵循承诺模式),因此您需要将 Promise 添加到组合中并等待它。

助手

module.exports = function() {

  this.returnStatus = "FAILURE";

  this.SuccessMsg = function() {      
    return new Cypress.Promise(resolve => {
      cy.exec('echo hello',  { log: true, failOnNonZeroExit: false }).then((output) => {
        this.returnValue = "SUCCESS";
        resolve(this.returnValue)
      });
    })
  }
}

测试

let Status = require('../support/returnStatus');
let helper = new Status();

describe("Check return value", function(){

  it("should check latest value", async function(){  // NOTE async test
      let reply =  await helper.SuccessMsg();
      console.log('reply', reply);  // now it prints /*SUCCESS*/
  })
});

如果您将帮助函数转换为自定义命令,则可能不需要将测试设为异步,因为赛普拉斯会自动等待 Promise 解决。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-21
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 2019-03-20
    • 1970-01-01
    相关资源
    最近更新 更多