带有expect的mocha不适用于测试错误

时间:2015-02-17 15:07:36

标签: javascript node.js mocha chai

在以下脚本中,只传递了一个测试。测试错误(throw Error())失败并显示消息 1)测试应该抛出错误:

var expect = require('chai').expect;
describe("a test", function() {
    var fn;
    before(function() {
        fn = function(arg){
            if(arg == 'error'){
                throw new Error();
            }else{
                return 'hi';
            } 
        }
    });

    it("should throw error", function() {
        expect(fn('error')).to.throw(Error);
    });
    it("should return hi", function() {
        expect(fn('hi')).to.equal('hi');
    });
});

如何改变期望测试错误?

2 个答案:

答案 0 :(得分:3)

expect()需要调用函数,而不是函数的结果。

将您的代码更改为:

expect(function(){ fn("error"); }).to.throw(Error);

答案 1 :(得分:0)

如果您使用错误第一次回调的Node方式,它看起来更像是这样:

var expect = require('chai').expect;

describe("a test", function() {
  var fn;
  before(function() {
    fn = function(err, callback){
        if(err) throw new Error('failure');

        return callback();
    }
  });

  it("should throw error", function() {
    expect(fn('error')).to.throw(Error);
  });
  it("should return hi", function() {
    var callback = function() { return 'hi' };
    expect(fn(null, callback).to.equal('hi');
  });
});