如何测试 Mocha 中的特定错误消息?

How to test for a specific error message in Mocha?

import assert from 'assert';
const fn = () => { throw new Error('bar') }

describe('fn()', () => {
  it('should throw "foo"', () => {
    assert.throws(fn, Error, 'foo');
  });
});

它(错误地)说测试通过了:

fn()
    √ should throw "foo"
    
  1 passing (8ms)

这是错误的,因为 fn() 抛出 'bar' 而不是 'foo'。我做错了什么?

我必须安装 chai 并使用其 assertexpect

import chai from 'chai';
const { assert, expect } = chai;
const fn = () => { throw 'foo' }

describe('fn()', () => {
  it('should throw "foo"', () => {
    expect(fn).to.throw('foo');
  });
});

根据 docs,如果您传递构造函数,库将执行 instanceof 验证,如果您想检查道具,则使用验证对象或正则表达式,例如

assert.throws(fn, {
  name: 'Error',
  message: 'foo'
});