如果期望失败,如何通过测试

时间:2015-08-10 03:17:12

标签: protractor mocha chai

我有这段代码

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

2 个答案:

答案 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"]);