我根据我看到的教程写了这个测试。我故意想要失败(喜欢的数量),但我总是得到一个通过测试。
这是我的代码:
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');
})
});
});
答案 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。返回承诺是一种方法。