如何在 Cypress 框架中获取存储在 Cucumber 特征文件数据 table 中的数字列表的总和?

How to get the sum of a list of numbers stored in a Cucumber Feature File data table in Cypress framework?

在我的 Cucumber/Cypress 测试框架中,我试图将一个数字列表加在一起。它们在以下功能文件中定义:

 When add the following pokemon to my cart
     | pokemonName | price |
     | bulbasaur   | 64    |
     | ivysaur     | 142   |
     | venusaur    | 263   |

这是我的步骤定义:

When('I add the following pokemon to my cart', (dataTable) => {
  let totalAmount;
  dataTable.hashes().forEach(elem => {
    totalAmount += elem.price
  });
  cy.log(totalAmount)
});

实际结果: 当我 运行 这个测试时,记录的 totalAmount 值是 64142263.

预期结果: 我希望实际结果是 3 个价格的总和 - 469

我知道代码的作用是将值作为字符串附加在一起,但我想知道如何将这些值作为数字处理,这样我才能得到它们的总和。

我从未使用过 Cucumber/Cypress,但看起来您的 totalAmount 是价格值的串联(=> 价格被视为字符串)。 您应该尝试使用一元加运算符:

totalAmount = +totalAmount + +elem;

Cypress 很可能将文本作为字符串而不是数字返回。当对字符串使用 += 时,它会将字符串添加到当前字符串 ('123' += '456' => '123456') 而不是实际添加数字。

如果您不想使用一元加号运算符,您可以简单地将返回的文本转换为数字。

...
totalAmount += Number(ele.price)
...

如果选择这种方法,为 totalAmount

定义一个类型可能会有所帮助