Chai:如何检查异常属性

kha*_*iuk 4 javascript node.js chai

考虑下面的一段代码:

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

parse = function() {
  throw {error: 'PROTOCOL_ERROR'}
}

describe('parser', function() {

  it('throw error on unfinished command', function() {
    try {
      parse("*2\r\n$4\r\necho\r\n$11\r\nhel")
    } catch (e) {
      expect(e).to.equal({error: 'PROTOCOL_ERROR'})
    }
  })
});
Run Code Online (Sandbox Code Playgroud)

有没有办法避免try...catch代码中出现这种样板?Chai 有“抛出”方法,但它只提供instanceof检查

kha*_*iuk 5

我找到了这个答案:

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

parse = function() {
  throw {error: 'PROTOCOL_ERROR'}
}

describe('parser', function() {
  it('throw error on unfinished command', function() {
      expect(
        () => parse("*2\r\n$4\r\necho\r\n$11\r\nhel")
      ).to.throw().which.has.property('error', 'PROTOCOL_ERROR');
  })
});
Run Code Online (Sandbox Code Playgroud)