我需要一些帮助来解释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;
});
});
我尝试在spec文件中使用它,如下所示:
const newUser = cy.newUser();
cy.log(newUser);
cy.get('[data-cy="email_field"]').type(newUser);
我认为我的问题的一部分是不完全理解如何'链接'与Cypress和自定义命令的大多数例子显示它使用或操纵DOM中的东西,但似乎我更想写一个助手函数,我会想在其他测试中重用...
任何指导都非常感谢
我试过使用'wrap'和'then',但我不认为我有正确的顺序(可能是由于没有完全理解JS)
2条答案
按热度按时间7xzttuei1#
正确的方法是使用回调函数来链接代码,就像这样:
我不能告诉如果你的自定义命令本身是正确的,这是一个真实的的混乱。请考虑在您的问题中张贴更整洁的代码。
zzzyeukh2#
谢谢你的帮助!我能够通过以下方式使其工作: