示例.功能
Scenario Outline: My test case
Given: My data is loaded
When : My data is ready
Then: My data is
|name| value |
|a | <value1> |
|b | <value2> |
|c | <value3> |
|d | <value4> |
Examples:
|value1| value2|value3| value4 |
|1 | 2 | 3 | text |
steps.js //使用 node.js
Then('My data is', function (dataTable) {
console.log(dataTable);
// console output
[['a', '1'],
['b', '2'],
['c', '3'],
['d', 'text']]
});
我需要将字符串值作为字符串输出,将整数作为整数输出
// expected output
[['a', 1],
['b', 2],
['c', 3],
['d', 'text']]
我不想根据名称进行硬编码,因为它可能会改变。有通用的解决方案吗?
答案 0 :(得分:0)
这将是一个特定于语言的问题。这可以通过使用对象映射器来解决。在 javascript 中,我认为有一个 #map
函数(但我不是 100%)。所以你会想要类似的东西。
虽然我的 JS 真的很生疏了
编辑:更好的解决方案是:
const ans = array2.map((array, index) => {
return array.map((element, innerIndex) => {
retVal = innerIndex%2==0 ? element + 1 : element * 2
return retVal
})
})
这将获取内部数组的每个元素,如果它是位置 0,2,4 等处的值,则将其加 1。如果它的位置为 1,3,5 等,则乘以 2
您可以根据自己的要求对其进行修改。
答案 1 :(得分:0)
您可以使用 isNaN(x)
检测值是否为数字。如果 isNaN(x)
函数返回 false
,您可以放心地忽略黄瓜数据表中的该值。如果 isNaN(x)
函数返回 true
,那么您可以使用 Number(x)
函数将字符串转换为数字。
isNaN
和 Number
函数是免费的。对于任何给定的输入,如果 isNaN
返回 true
,则将相同的输入传递给 Number
将返回 NaN
值。如果 isNaN
返回 false
,则将该输入传递给 Number
将成功将其转换为数字。
请记住,零在 JavaScript 中是一个假值,因此 if (Number("0"))
将被评估为 false
。
function parseDataTable(dataTable) {
return dataTable.map((row, index) => {
if (!isNaN(row[1])) {
row[1] = Number(row[1]);
}
return row;
});
}
并在您的步骤定义中使用它:
Then('My data is', function (dataTable) {
dataTable = parseDataTable(dataTable);
console.log(dataTable);
/*
Should output:
[
["a", 1],
["b", 2],
["c", 3],
["d", "text"]
]
*/
});