我有这段代码
it('This should pass anyway', function (done) {
testObj.testIt(regStr);
});
testObj
this.testIt = function (regStr) {
selector.count().then(function (orgCount) {
for (var curr = 0; curr < count; curr++) {
checkField(curr, regStr);
}
});
};
function checkField(curr, regStr) {
selector.get(curr).all(by.tagName('li')).get(0).getInnerHtml().then(function (text) {
expect(text).to.match(regStr, curr + '#ERR');
});
}
如果其中一个预期失败,则测试失败。我怎么处理这个?我的意思是 - 我可以以某种方式计算通过和失败期望()ations并返回它?或者,至少,不要让第一次错误的测试中断。
我尝试过try-catch,但没有发生任何好事。
it('This should pass anyway', function (done) {
try {
testObj.testIt(regStr);
} catch (e) {
console.log('#err' + e);
}
});
然后我想使用done(),但还没有找到任何相似的例子。你能帮帮我吗? Sry for my english
UPD
答案 0 :(得分:0)
您可以从checkField()返回null或字符串,将它们连接起来,并期望该数组为空:
this.testIt = function (regStr) {
selector.count().then(function (orgCount) {
var errors = [];
for (var curr = 0; curr < orgCount; curr++) {
var e = checkField(curr, regStr);
if (e) { errors.push(e); }
}
assert.equal(0, errors.length, errors);
});
};
答案 1 :(得分:0)
更简洁的方法是使用map()
将数据收集到数组中:
var data = selector.map(function (elm) {
return elm.element(by.tagName('li')).getText();
});
expect(data).toEqual(["test1", "test2", "test3"]);