gpt4 book ai didi

node.js - 我的 Nightmare 测试并没有进入我的评估声明

转载 作者:行者123 更新时间:2023-12-03 13:24:14 24 4
gpt4 key购买 nike

在 Mocha 和 Nightmare 中获得一些运行测试的练习。在进入评估块之前,一切似乎都可以正常工作。

var Nightmare = require('nightmare'),
should = require('chai').should()

describe('Frontend Masters', function() {
this.timeout(20000);

it('should show form when loaded', function(done) {
var nightmare = new Nightmare({show: true})
nightmare
.goto('https://frontendmasters.com/')
.wait('a[href*="https://frontendmasters.com/login/"]')
.click('a[href*="https://frontendmasters.com/login/"]')
.wait('#rcp_login_form')
.evaluate(function() {
return window.document.title;
}, function(result) {
result.should.equal('Login to Frontend Masters');
done();
})
.run(function(){
console.log('done')
});
});
});

我已经提交了控制台日志,但它从未进入评估。我尝试将几个选择器传递到我的wait()函数中,但似乎没有效果。我收到的唯一错误是超过了超时时间。但是我设置多长时间都没关系

最佳答案

您正在使用哪个版本的梦m?

.evaluate() 的签名已更改,我认为这可能是您问题的根源。您传入的第二个函数-以前用于处理评估结果的函数-实际上已作为参数传递给第一个.evaluate()参数。换句话说,永远不会运行第二个参数,永远不会调用done(),并且测试将超时。

还值得一提: .run() is not directly supported。请改用.then()

最后,让我们修改您的源代码以反射(reflect)上述内容,以帮助您入门:

var Nightmare = require('nightmare'),
should = require('chai')
.should()

describe('Frontend Masters', function() {
this.timeout(20000);

it('should show form when loaded', function(done) {
var nightmare = new Nightmare({
show: true
})
nightmare
.goto('https://frontendmasters.com/')
.wait('a[href*="https://frontendmasters.com/login/"]')
.click('a[href*="https://frontendmasters.com/login/"]')
.wait('#rcp_login_form')
.evaluate(function() {
return window.document.title;
})
.then(function(result) {
result.should.equal('Login to Frontend Masters');
console.log('done')
done();
})
});
});

关于node.js - 我的 Nightmare 测试并没有进入我的评估声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38901875/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com