从'then'里面断言断言

时间:2018-02-13 21:56:30

标签: node.js selenium mocha assert

我需要使用'then'创建一系列selenium命令,但我不知道在这种情况下如何从asserts返回promise。我一直收到这个警告:

  

(node:18772)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:1):AssertionError [ERR_ASSERTION]:'英雄联盟'=='Reddit上的Dota 2'

     

(node:18772)[DEP0018]弃用警告:不推荐使用未处理的拒绝承诺。将来,未处理的承诺拒绝将使用非零退出代码终止Node.js进程。

我所说的例子:

var assert = require('assert');
var webdriver = require('selenium-webdriver');

it('should do something with promises', function(done) {
  this.timeout(300000);
  driver = new webdriver.Builder().
  withCapabilities(webdriver.Capabilities.firefox()).
  build();
  driver.get("https://www.reddit.com/r/leagueoflegends/").
  then( () => driver.getTitle()).
  then( (title) => assert.equal(title,"Dota 2 on Reddit")).
  then(() => driver.quit()).
  then(() => done());
});

1 个答案:

答案 0 :(得分:0)

你在某个地方遇到了一个错误,并没有在任何地方处理。一个快速简单的解决方法是添加

.catch(e => done(e))

到上一个.then(...)的结尾。这将捕获任何.then(...)的任何错误,您可以适当地处理它。如果您致电done()并将其传递给任何参数(如done(e)),则Mocha会认为测试失败。如果失败,你总是可以这样调用assert.fail

.catch(e => assert.fail(e, 'expected value', 'Unknown description here'))