2014-11-21 1 views
1

Я использую транспортир для выполнения моих тестов огурца. Внутри моего теста у меня есть следующее утверждение:Транспортир, огурец и чай как и обещал: когда утверждение chai не удается

label.getText().then(
       function(labelText){ 
        labelText = labelText.trim(); 
        console.log('label text: ' + labelText); 
        chai.expect(labelText).to.equal(arg1); 
        callback(); 
       }, 
       function() { 
        callback.fail('Could not get page label text'); 
       }); 

Когда утверждение верное, проблем нет. Однако, когда мой tagText отличается от arg1, я бы все равно продолжал его запускать, но я не знаю, как добавить в него исключение или отказоустойчивость. На данный момент мое приложение просто выходит. Я знаю, что это потому, что я не использую отказоустойчивый ответ (я хотел бы знать, где мне это нужно).

Я также не уверен, должен ли я поставить callback(); где он сейчас.

Я ищу решения в Интернете, и все, что я могу найти, это примеры использования Mocha. Я не использую мокку или жасмин. Я просто использую рамки Cucumber с транспортиром. Поскольку у Cucumberjs нет библиотеки утверждений, я добавил chai-as-обещанный для этого. Благодаря!

ответ

1

У Cucumber.js, кажется, есть проблемы, когда expect() вызывает отказ в обратном вызове. Так как вы Chai-а обещанный установлен, попробуйте сделать следующее:

var labelText = label.getText().then(
    function(labelText){ 
    labelText = labelText.trim(); 
    console.log('label text: ' + labelText); 
    return labelText; 
    }); 
chai.expect(labelText).to.eventually.equal(arg1).then(callback); 

Я получил этот обходной путь от this comment, и она работала хорошо для меня.

0

Если у вас есть chai-as-promised, то вы можете утверждать асинхронный такой код:

this.When(/^I assert async code$/, function(callback) { 
    expect(asyncMethod()).to.eventually.equal(true).and.notify(callback); 
});