繁体   English   中英

Cypress Typescript:如何从 dataTable 中获取某个值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM