为什么我的梦魇测试总是成功,即使它失败了?

时间:2016-07-15 10:27:06

标签: testing mocha

我根据我看到的教程写了这个测试。我故意想要失败(喜欢的数量),但我总是得到一个通过测试。

这是我的代码:

var Nightmare = require('nightmare');
var expect = require('chai').expect;

describe('test youtube search results', function() {

    it('check the likes', function() {
        var nightmare = Nightmare()
        nightmare
            .goto('https://www.youtube.com/watch?v=0_oPsFTyhjY')
            .scrollTo(10000,0)
            .wait('#comment-section-renderer-items')
            .evaluate(function () {
                return document.querySelector('#watch8-sentiment-actions > span > span:nth-child(1) > button > span').innerText;
            })
            .end()
            .then(function(likes) {
                expect(likes).to.equal('245'); 
            })
    });
});

1 个答案:

答案 0 :(得分:0)

你从梦魇得到的是一个承诺。只需从测试中返回承诺。并设置更高的超时以给予Nightmare运行时间。所以:

it('check the likes', function() {
    this.timeout(10000); // <-- Set a higher timeout.
    var nightmare = Nightmare()
    return nightmare                 // <-- The return is here.
        .goto('https://www.youtube.com/watch?v=0_oPsFTyhjY')
        .scrollTo(10000,0)
        .wait('#comment-section-renderer-items')
        .evaluate(function () {
            return document.querySelector('#watch8-sentiment-actions > span > span:nth-child(1) > button > span').innerText;
        })
        .end()
        .then(function(likes) {
            expect(likes).to.equal('245'); 
        })
});

否则,Mocha不知道您的测试何时实际完成。对于异步测试,您必须在测试完成时告诉Mocha。返回承诺是一种方法。