Nightwatchjs - 从全局文件中提取值

问题描述 投票:0回答:1

我正在使用 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
,还是更基本的东西?

任何帮助将不胜感激。谢谢

javascript nightwatch.js
1个回答
0
投票

这是全球价值观不持久的问题。

这对我有用;

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)
    })

虽然这有效,但必须注意它只能在串行工作中工作。对于坚持并行工作的全局变量,存在一个错误。

© www.soinside.com 2019 - 2024. All rights reserved.