Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使此函数获取动态值?_Javascript_Typescript_Cypress - Fatal编程技术网

Javascript 如何使此函数获取动态值?

Javascript 如何使此函数获取动态值?,javascript,typescript,cypress,Javascript,Typescript,Cypress,我创建了一个函数来测试一个输入字段,该函数当前接受6个输入,其中3个是要键入的文本,另外3个是我们在键入某些文本时收到的错误消息,这很好。该函数将根据输入的文本数量循环,因此在这种情况下,它将输入文本,然后单击提交,然后检查错误消息。它会这样做3次,因为我传递了3个文本值。然而,我希望能够使它成为动态的,这样它就可以接受任何数值,并根据传递的数量进行循环 Cypress.Commands.add('checkErrMsg', (fieldText1, fieldText2, fieldText3

我创建了一个函数来测试一个输入字段,该函数当前接受6个输入,其中3个是要键入的文本,另外3个是我们在键入某些文本时收到的错误消息,这很好。该函数将根据输入的文本数量循环,因此在这种情况下,它将输入文本,然后单击提交,然后检查错误消息。它会这样做3次,因为我传递了3个文本值。然而,我希望能够使它成为动态的,这样它就可以接受任何数值,并根据传递的数量进行循环

Cypress.Commands.add('checkErrMsg', (fieldText1, fieldText2, fieldText3, errorText1,errorText2, errorText3) => { 
var fieldValues = [fieldText1, fieldText2, fieldText3];
var errorValues = [errorText1, errorText2, errorText3];
var sum =0;

fieldValues.forEach(function(entry) {
    cy.get('.textBox').clear().type(entry)
    cy.get('.addBtn').click()
    cy.get('#errMsg').should('be.visible').and('have.contain',(errorValues[sum++])).click();
});
})
我根据Cyps中typescript项目的要求,将自定义命令添加到命名空间中

declare namespace Cypress {
interface Chainable {
    checkErrMsg(fieldText1: string, fieldText2: string, fieldText3:string, errorText1:string
    ,errorText2: string, errorText3:string): Chainable<string>;
}
}
声明命名空间Cypress{
可链接接口{
checkErrMsg(fieldText1:string、fieldText2:string、fieldText3:string、errorText1:string
,errorText2:string,errorText3:string):可链接;
}
}

制作这种可变函数的最佳方法是使用一个。棘手的部分是,如果将每个字段作为单独的参数,则需要两个字段——一个用于字段,一个用于错误。一个选项是每对字段和错误的
[string,string]
元组类型。声明如下:

声明命名空间Cypress{
键入FieldAndErrorValues=[string,string];
可链接接口{
checkErrMsg(…fieldAndErrorValues:fieldAndErrorValues[]):可链接;
}
}
以及实施:

Cypress.Commands.add('checkermsg',(…fieldAndErrorValues:Cypress.fieldAndErrorValues[])=>
forEach(函数([fieldValue,errorValue]){
cy.get('.textBox').clear().type(fieldValue);
cy.get('.addBtn')。单击();
cy.get('#errMsg')。应该('be.visible')。和('have.contain',(errorValue))。单击();
});
});
以及可能的调用:

cy.checkermsg(['field1','error1'],['field2','error2']);