如何在 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
定义一个类型可能会有所帮助
在我的 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