摩卡测试快递启动

时间:2017-10-15 18:10:36

标签: node.js express mocha chai

如果缺少参数(例如,数据库URI),我的快递服务器会抛出错误。我想在Mocha中测试它实际上是在抛出错误,但我不知道如何让Mocha做到这一点。

if(!parameters.db) {
    throw new Error('Please provide a db URI');
}

我有这样的测试设置:

it('Throws Error when no db URI provided in production mode', function () {
    expect(require('../server')).to.throw();
    done();
});

当我的Express应用程序抛出错误时,错误将被抛入控制台并且测试失败(事实上,它不会结束)。

我遇到的另一个问题是Express仅在环境处于生产模式时检查参数。我试图在测试套件中将流程环境设置为生产,但是当我运行它时,NODE_ENV仍然设置为'test'。

before(function() {
    env = process.env;
    // This doesn't really set the environment when I run the tests.
    process.env.NODE_ENV = 'production'; 
});

1 个答案:

答案 0 :(得分:1)

如果您正在尝试测试应用程序中未处理的异常,请尝试将调用包装在try/catch中,如果没有抛出错误则返回错误。

it('Throws Error when no db URI provided in production mode', function () {
  let threwError = false;
  try {
    // create the server that throws the Error
    require('../server');
  } catch (err) {
    threwError = true;
  }
  expect(threwError, 'Didn\'t throw an error, when DB URI is empty').to.be.true;
});