如何使用 Cypress 自定义命令增加和返回 JSON 文件的内容以进行字段输入

0 javascript ui-automation cypress cypress-custom-commands

我可以使用一些帮助来向我解释 cypress 中的自定义命令如何工作。我目前正在编写一个函数,该函数读取 json 文件并将内容加 1,并希望将其返回到测试规范,以便可以将其输入到字段中。注意* JS 和 Cypress 的新功能

这是commands.ts 中的代码:

Cypress.Commands.add('newUser', () => {
    cy.readFile('cypress/fixtures/users.js
    const oldUser = user.user;
    cy.log(typeof oldUser);
    // Getting old number from user
    const reg = /\d+/gm;
    let oldNum = oldUser.match(reg);
    cy.log(oldNum);
    oldNum = toInteger(oldNum);
    cy.log(typeof oldNum);
    // New number for user
    const newNum = oldNum + 1;
    cy.log(newNum.toString());
    let newUser = oldUser.split(reg);
    cy.log(newUser);
    // Add to a specified location
    newUser.splice(1, 0, newNum);
    cy.log(newUser);
    newUser = newUser.join('');
    // cy.log(newUser);
    cy.writeFile('cypress/fixtures/users.json', { user: newUser });
    return newUser;
  });
});
Run Code Online (Sandbox Code Playgroud)

我尝试在规范文件中使用它,如下所示:

const newUser = cy.newUser();
    cy.log(newUser);
    cy.get('[data-cy="email_field"]').type(newUser);
Run Code Online (Sandbox Code Playgroud)

我认为我的部分问题是没有完全理解“链接”如何与 Cypress 配合使用,并且大多数自定义命令示例都显示它使用或操作 DOM 中的某些内容,但似乎我更多的是编写一个我想要重复使用的辅助函数在其他测试中...

非常感谢任何指导

我尝试过使用“wrap”和“then”,但我认为我的顺序不正确(可能是由于不完全理解JS)

小智 5

正确的方法是使用回调函数链接代码,如下所示:

cy.newUser().then(newUser => {
  cy.log(newUser)
  cy.get('[data-cy="email_field"]').type(newUser)
})
Run Code Online (Sandbox Code Playgroud)

我无法判断你的自定义命令本身是否正确,这真是一团糟。请考虑在您的问题中发布更整洁的代码。