javascript - 如何在 Cypress 中包含一段用于电子邮件格式验证的 Js 代码或 Js 文件

更新/编辑:我有一个包含名字、姓氏和电子邮件的夹具文件,它遍历 beforeeach() 并将它们输入到相应的字段中。我想要做的验证是让我们说输入了错误的电子邮件,没有'@','.com'或仅存在'@'或仅存在'.com',当验证该字段时,这些应该失败。

const availablefixtures = [
{
    "name": "data3",
    "context": "1"
},
{
    "name": "data2",
    "context": "2"
}
]

夹具文件中的数据是:

{
    "firstname": "Lambda",
    "lastname": "Jonas",
    "email": "ljonas@example.com"
}

describe('demoniftyhappysuite', function () {
//loop through both the fixtues 
availablefixtures.forEach((afixture) => {
    describe(afixture.context, () => {
enter code here

cy.fixture(afixture.name).then(function (data) {
                this.data = data;
            })

目前我正在从装置中的数据文件中读取电子邮件 value

it('demoniftyhappytest', {}, function () {
cy.get('input[name="personal.email"]').type(this.data.email, { 
log: false 
}).invoke('val').should('not.be.empty')

来自:https://stackoverflow.com/questions/62953993/how-can-i-check-email-validation-in-cypress 最好的方法是将一组电子邮件放在一个数组中。 (可能在 JSON 中)并遍历它们并检查电子邮件的有效性。

例如:

{
"Email_1":"['robot@mail.com','valid']",
"Email_2":"['robotmail.com','InValid']",
}

第二种解决方案:示例 为 email validation 尝试以下代码。

<script type = "text/javascript">
    <!--
     function validateEmail() {
     var emailID = document.myForm.EMail.value;
     atpos = emailID.indexOf("@");
     dotpos = emailID.lastIndexOf(".");
     
     if (atpos < 1 || ( dotpos - atpos < 2 )) {
        alert("Please enter correct email ID")
        document.myForm.EMail.focus() ;
        return false;
     }
     return( true );
     }
    //-->
    </script>

我希望它是简单的,即使它暂时在输入的电子邮件中验证@symbol 和 .com。

回答1

您可以使用 .forEach() 遍历电子邮件数组并以这种方式确定行为。由于您当前已经构建了电子邮件 json,我们需要从 Object.values() 获取数组。

const emails = {
  "Email_1": ['robot@mail.com','valid'],
  "Email_2": ['robotmail.com','InValid'],
}

describe('tests', () => {
  it('validates the emails', () => {
    Object.values(emails).forEach((value) => {
      if (value[1] === 'valid') {
        // code to run if valid -- reference email address as `value[0]`
      } else if (value[1] === 'InValid') {
        // code to run if invalid -- reference email address as `value[0]
      }
    });
  });
});

如果您想将对象更改为数组数组,则如下所示:

const emails = [ ['foo@gmail.com', 'valid'], ['foogmail.com', 'InValid'] ];
...
emails.forEach((email) => {
  if (email[1] === 'valid') {
    ...
  } else if (email[1] === 'InValid') {
    ...
  }
// reference email value as `email[0]`
})

或者如果你想让它成为一个对象数组

const emails = [ { email: 'foo@gmail.com', isValid: true }, { email: 'foogmail.com', isValid: false } ];
emails.forEach((value) => {
  if (value.isValid) {
   ...
  } else {
   ...
  }
})
// email address is referenced by `value.email`

相似文章

随机推荐

最新文章