我正在尝试验证从黄瓜数据表到前端的值。当我只将数据表传递给我的步骤def但是当我将变量与数据表一起传递时,测试工作正常;测试中断并给出错误" table.rows()不是有效的函数"
以下是功能文件:
然后是学生的学生信息" 1761"在学生列表页面中应该是正确的
|名称| ID |部门#| | Monnie | 123 | 1761 |
步骤定义:
Then(/^the student info for student "([^"]*)" should be correct in the fund list page$/, function (table, studNumber) {
let testTable = table.rows();
return this.pages.prd2Page.getCellInfo(studNumber).then((actualTexts) => {
return assert.deepEqual(testTable.toString(), actualTexts.toString());
//return console.log(actualTexts.toString());
});
});
如您所见,我正在传递数据表和变量。如果我删除变量并硬编码该变量的值。这个测试通过。 有人可以分享一些关于这里可能出现问题的信息吗?
答案 0 :(得分:0)
我尝试了你想要通过这一步实现的目标(步骤可能听起来很愚蠢,这只是一个测试):
Then I should see these in Missing required fields popup "test"
| fieldName |
| Category |
自动生成的步骤定义是:
Then(/^I should see "([^"]*)" these in Missing required fields popup$/, function(arg1, callback) {
// Write code here that turns the phrase above into concrete actions
callback(null, 'pending');
});
似乎无法同时传递参数和表。相反,您可以使用表中的值将stdNumber传递给getCellInfo函数:
Then(/^the student info for student "([^"]*)" should be correct in the fund list page$/, function (table, studNumber) {
table.rows().forEach(row => {
return this.pages.prd2Page.getCellInfo(row[2]).then((actualTexts) => {
return assert.deepEqual(row.toString(), actualTexts.toString());
//return console.log(actualTexts.toString());
});
});
});
}
黄瓜help也解释了替代用法。
注意:我的例子是在typescript中
答案 1 :(得分:0)
您需要指定要传递到步骤定义中的所有变量。
此外,您还需要考虑参数的顺序。该表在最后传递。
示例:
Then I order from "Dominos" a pizza for 4 ppl
| Size | Crust | Sauce | Cheese |
| 13.5 | Stuffed | Tomato | Mozzarella |
在这里(按顺序):
定义是:
Then(/^I order from "(.*)" a pizza for (\d) ppl$/, function (pizza_place, ppl_num, table) {
console.log('Buy from: ' + pizza_place);
console.log('For ' + ppl_num + ' people');
const input = table.hashes()
console.log('Size: ' + input[0].Size);
console.log('Crust: ' + input[0].Crust);
console.log('Sauce: ' + input[0].Sauce);
console.log('Cheese: ' + input[0].Cheese);
});
输出为:
Buy from: Dominos
For 4 people
Size: 13.5
Crust: Stuffed
Sauce: Tomato
Cheese: Mozzarella