【发布时间】:2014-09-04 08:16:17
【问题描述】:
我希望根据之前的断言是否成功,有条件地执行一些命令/断言。
我似乎找不到嵌套then 调用或使用leadfoot 的链接语法有条件地执行事物的方法。
这是我的测试(每个函数末尾的返回是由于正在编译的咖啡脚本):
tdd.test(tableUrl, function() {
this.timeout = 60000;
return this.remote.get(require.toUrl("tests/pages/" + tableUrl))
.setPageLoadTimeout(60000)
.setFindTimeout(20000)
.findByCssSelector('.dataTables_wrapper table.dataTable')
.then(null, function(err) {
return assert.fail('', '', 'Table should exist');
}).then(pollUntil(function() {
var table;
table = document.querySelector('.dataTables_wrapper table.dataTable');
if (table.querySelectorAll('tbody td').length > 1) {
return true;
} else {
return null;
}
}, null, 20000, 500)).then(function() {
console.log('Assertion succeeded: Table should have data');
return assert.ok(true, 'Table should have data');
}, function(err) {
return assert.fail('', '', 'Table should have data');
});
});
当一个表不存在时,“表应该存在”和“表应该有数据”断言都应该报告为失败。但是,只有最后一个断言失败。当我注释掉“表应该有数据”错误回调时,“表应该存在”断言被报告为正确失败。
我想做的是
-
测试
table是否存在(通过 findByCssSelector)。a) 如果存在,报告它存在并测试它是否有多个
td元素。这目前是通过pollUntil完成的,以确保命令完成/一旦找到多个td就解决承诺,而不是等待整个隐式等待时间。b) 如果不存在,则报告不存在。
如果第一个 findByCssSelector 失败,我似乎找不到不执行第二个“表应该有数据”轮询的错误回调的方法,因为缺少条件并且仅测试中报告的最后一个断言失败。
【问题讨论】: