[英]Cypress Typescript: How do I get a certain value from dataTable?
我有这个 data.table,其中包含我想在场景中检查的原因(状态)和结果(消息)列表。
Given user inputs "<state>" and sees "<message>" message
| state | message |
| Deactivated | error |
| Taken | error |
| Unused | confirmation |
我尝试使用此脚本,但它只是执行state
以下的所有内容,而不是同时执行message
操作。
Given(‘user inputs {string} and sees {string} message’, (dataTable: DataTable) => {
dataTable.hashes().forEach(elem =>{
if(elem.state == 'Deactivated') {
<DeactivatedAction>
} else if(elem.state == 'Taken') {
<TakenAction>
} else if(elem.state == 'Unused') {
<UnusedAction>
} else {
throw new Error("No state defined")
}
})
dataTable.hashes().forEach(elem =>{
if(elem.message == 'error') {
<errorAction>
} else if(elem.message == 'confirmation') {
<confirmationAction>
} else {
throw new Error("No state defined")
}
})
}
当我将.forEach()
更改为.map()
时,也会发生同样的事情。 :/
如果我理解正确,您希望第二个循环访问“消息”,如果这样的话它看起来更像是一个错字——您引用的是elem.state
而不是elem.message
。
dataTable.hashes().forEach(elem => {
if (elem.message === 'error') {
<errorAction>
} else if (elem.message === 'confirmation') {
<confirmationAction>
} else {
throw new Error("No state defined")
}
})
从技术上讲,如果您将循环组合在一起,那么这两个部分都应该有效
dataTable.hashes().forEach(elem => {
if (elem.state == 'Deactivated') {
<DeactivatedAction>
} else if (elem.state == 'Taken') {
<TakenAction>
} else if (elem.state == 'Unused') {
<UnusedAction>
} else {
throw new Error("No state defined")
}
if(elem.message == 'error') {
<errorAction>
} else if(elem.message == 'confirmation') {
<confirmationAction>
} else {
throw new Error("No state defined")
}
})
但这有点明显。 感觉state和行中的消息之间一定有某种联系,
function doMessage(message) {
if(message == 'error') {
<errorAction>
} else if(message == 'confirmation') {
<confirmationAction>
} else {
throw new Error("No state defined")
}
}
dataTable.hashes().forEach(elem => {
if (elem.state == 'Deactivated') {
<DeactivatedAction>
cy.then(() => doMessage(elem.message))
} else if (elem.state == 'Taken') {
<TakenAction>
cy.then(() => doMessage(elem.message))
} else if (elem.state == 'Unused') {
<UnusedAction>
cy.then(() => doMessage(elem.message))
} else {
throw new Error("No state defined")
}
})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.