cy.then(() => func()) 和 cy.wrap(null).then(() => func()) 之间的区别

问题描述 投票:0回答:1

我正在努力等待异步函数完成。特别是,我发现这两种方法在测试继续之前等待异步函数完成,但不知道区别(如果有的话):

cy.then(() => myAsyncFunction())
cy.wrap(null).then(() => myAsyncFunction())

我的目标是在实际测试开始之前等待

beforeEach()
块中的两个异步函数:

beforeEach(() => {
    myAsyncFunction1() // This function has to be completed before the next one starts
    myAsyncFunction2() // This function has to be completed before the test continues
    // Only when myAsyncFunction2() has completed the actual tests should start
});

我尝试通过 Google 搜索差异,并查看了 Cypress 的文档,但遗憾的是没有找到其行为方式的答案。

javascript asynchronous cypress
1个回答
0
投票

cy.then()
cy.wrap(null).then()
之间有一些区别:

  1. cy.then()
    - 用于在继续之前等待上一个 Cypress 命令的结果。由于
    beforeEach()
    中没有先前的命令,因此
    cy.then()
    将不起作用。

  2. cy.wrap(null).then()
    - 其工作原理是包装一个空值并将
    .then()
    链接到其上。这允许您在测试运行之前执行异步代码。

  3. 重试 - 只有在 Cypress 命令之后链接的命令(如

    cy.get()
    )才会在失败时自动重试。
    cy.wrap(null).then()
    不会重试。

  4. Yielding -

    cy.then()
    产生上一个命令的结果,而
    cy.wrap(null).then()
    始终产生 null。

© www.soinside.com 2019 - 2024. All rights reserved.