我正在使用 nightwatchjs (v3.x) 来运行我的测试脚本,并且我刚刚引入了一些
before
和 beforeEach
挂钩来帮助完成这些测试。
因此,在我的
globals.js
文件中,我有以下代码(使用 solr-client 从 solr 实例获取信息以在后续测试脚本中使用);
var featuresSection = 'features/';
var tipsSection = 'tips-and-tuition/';
// solr reviews query
var cmsRandomEquipmentReview = require('/nightwatch/custom-commands/solrQuery/randomSolrEquipmentReview');
var cmsEquipmentSettingsPage;
var solr = require('solr-client');
module.exports = {
before: function(done) {
var solrClient = browser.globals.solrWpEquipmentReviewsClient;
equipmentReview.solr_equipment_review_entry(solrClient, function(err,cmsEquipmentSettings) {
if(err) {
console.log(err);
done(err);
} else {
cmsEquipmentSettingsPage = cmsEquipmentSettings;
// console.log(cmsEquipmentSettingsPage)
}
});
done();
},
此 solr 查询工作正常(如果我在其中添加
console.log
,它会正确显示 solr 条目)。
但是,我现在需要做的是在我的测试脚本中引用
cmsEquipmentSettingsPage
的值。
为了检查测试是否获取
globals.js
信息,在我的测试脚本中添加了此信息;
module.exports = {
'Testing the solr query': function (browser) {
var tipsDisplayed = browser.globals.tipsSection
var solrQueryDisplayed = browser.globals.cmsEquipmentSettingsPage
console.log(tipsDisplayed)
console.log(solrQueryDisplayed)
},
但是,当我运行测试时,
tipsDisplayed
正确显示tips-and-tuition/
,但solrQueryDisplayed
显示undefined
。
尽管事实上,当我在
cmsEquipmentSettingsPage
文件中添加 console.log
时,globals.js
肯定具有有效值。
我在测试脚本中引用这个
cmsEquipmentSettingsPage
值是否明显错误(即,我是在它实际获得值之前“调用”cmsEquipmentSettingsPage
,还是更基本的东西?
任何帮助将不胜感激。谢谢
这是全球价值观不持久的问题。
这对我有用;
var featuresSection = 'features/';
var tipsSection = 'tips-and-tuition/';
// solr reviews query
var cmsRandomEquipmentReview = require('/nightwatch/custom-commands/solrQuery/randomSolrEquipmentReview');
var cmsEquipmentSettingsPage = {};
var solr = require('solr-client');
module.exports = {
cmsEquipmentSettingsPage:cmsEquipmentSettingsPage,
before: function(done) {
var solrClient = browser.globals.solrWpEquipmentReviewsClient;
equipmentReview.solr_equipment_review_entry(solrClient, function(err,cmsEquipmentSettings) {
if(err) {
console.log(err);
done(err);
} else {
cmsEquipmentSettingsPage['setting'] = cmsEquipmentSettings;
done();
}
});
},
在我的
nightwatch.conf.js
文件中我必须设置;
persist_globals: true,
在我的测试脚本中;
it('Globals displayed', async function (browser) {
console.log(browser.globals.cmsEquipmentSettingsPage)
})
虽然这有效,但必须注意它只能在串行工作中工作。对于坚持并行工作的全局变量,存在一个错误。