我正在尝试在测试开始时执行功能,然后应该执行其余测试。
这是我的自定义命令(名为internalAdviceLinksHtml
):
var solr = require('solr-client')
exports.command = function() {
this
var client = solr.createClient('solr.dev.bauerhosting.com', 8080, 'cms', '/www.parkers.co.uk');
var globalSettingsQuery = client.createQuery()
.q({TypeName:'Bauer.Parkers.GlobalSettings'})
.start(0)
.rows(10);
client.search(globalSettingsQuery,function(err,obj) {
if (err) {
console.log(err);
} else {
var myresult = (obj.response.docs[0].s_InternalAdviceLinksHtml);
console.log(myresult.length);
if (myresult.length === 0) {
console.log('content block not configured');
} else {
console.log('content block configured');
}
}
});
return this;
};
测试文件(脚本):
module.exports = {
'set up the solr query': function (browser) {
browser
.solr_query.global_settings.internalAdviceLinksHtml();
},
'links above footer on advice landing page displayed': function (browser) {
browser
.url(browser.launch_url + browser.globals.carAdvice)
.assert.elementPresent('section.seo-internal-links')
},
'closing the browser': function (browser) {
browser
.browserEnd();
},
};
该功能正常工作(例如,如果myresult
的长度为0,则显示 “未配置内容块” ,依此类推),但是进行了以下测试(“显示在建议登录页面上的页脚上方的链接” )不会被调用。
在自定义命令之后,执行似乎停止了。我相信这对某人来说将是显而易见的,但是我似乎看不出它是什么。
任何帮助将不胜感激。
答案 0 :(得分:0)
关于您的internalAdviceLinksHtml
自定义命令,从我的角度来看一切都很好(我认为孤独的this
是一个错字)。
您的预感是正确的,似乎Nightwatch测试运行程序无法进行下一个测试,这可能是由于某些承诺没有在上游解决(client.search
中的internalAdviceLinksHtml
函数)。
我建议在输出到控制台( 未配置内容块 ,或 内容块已配置之后)立即执行return this
strong> ),看看是否可以解决问题:
client.search(globalSettingsQuery,function(err,obj) {
if (err) {
console.log(err);
} else {
var myresult = (obj.response.docs[0].s_InternalAdviceLinksHtml);
console.log(myresult.length);
if (myresult.length === 0) {
console.log('content block not configured');
} else {
console.log('content block configured');
}
}
return this
});
另外,还有一些额外的指针:
before
挂钩| 拆卸 (例如:beforeEach
=> browser.end()
/ after
挂钩); < / li>
afterEach
。查看this答案以获取有关此问题的更多信息。您的测试文件将变为:
browser.end()