Nightwatch.js功能不“关闭”

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

我正在尝试在测试开始时执行一个函数,然后应该执行其余的测试。

这是我的自定义命令(名为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,则显示“未配置内容块”等),但从不调用以下测试(“在显示的建议登录页面上的页脚上方链接”)。

似乎执行在custom-command之后停止。我相信这对某些人来说是非常明显的,但我似乎无法看到它是什么。

任何帮助将不胜感激。

javascript function selenium selenium-webdriver nightwatch.js
1个回答
0
投票

关于你的internalAdviceLinksHtml定制命令,从我的角度来看,一切看起来都很好(我认为孤独的this是一个错字)。

你的预感是正确的,似乎Nightwatch测试运行器未能进入下一个测试,这可能是由于一些承诺没有在上游解决(来自client.searchinternalAdviceLinksHtml功能)。

我建议在输出到控制台(未配置内容块或配置内容块)后立即执行return this,看看是否能解决问题:

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

另外,还有一些额外的指示:

  • 利用Nightwatch test-hooks让您的测试更容易阅读/维护并创建一个关注点分离(setup => before / beforeEach hooks | teardown(例如:browser.end())=> after / afterEach hooks);
  • 你不需要在测试用例结束时做一个明确的browser.end()。有关此事的更多信息,请查看this答案。

您的测试文件将变为:

module.exports = {
  // > do your setup here <
  before(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');
  },
  // > do your cleanup here <
  after(browser)  {
    browser
      .browserEnd();
  },  
}; 
© www.soinside.com 2019 - 2024. All rights reserved.