使用 Mocha/Chai/TypeScript 创建测试,当向函数发送不同数量或类型的参数时失败

Create test using Mocha/Chai/TypeScript that fails when a different amount or type of arguments is sent to a function

我不确定我对 chai 的理解是否正确,但是有没有一种方法可以测试函数在发送错误数量(或类型)的参数时是否会失败?例如:

expect( function(){
    let foo = new MyClass();
} ).to.throw('Error')

但是 MyClass() 在它的定义中需要一个参数,像这样:

class MyClass{
    name:string;
    constructor(name:string){
        this.name = name;
    }
}

感谢您的帮助。

您可以使用 .throw([errorLike], [errMsgMatcher], [msg]) 方法。

例如

index.ts:

export class MyClass {
  name: string;
  constructor(name: string) {
    if (typeof name !== 'string') {
      throw new TypeError('expect "string" type for "name" argument');
    }
    this.name = name;
  }
}

index.test.ts:

import { MyClass } from './';
import { expect } from 'chai';

describe('63958704', () => {
  it('should throw error if no parameter passed in the constructor', () => {
    expect(() => new MyClass(1 as any)).to.throw('expect "string" type for "name" argument');
  });
});

单元测试结果:

  63958704
    ✓ should throw error if no parameter passed in the constructor


  1 passing (43ms)

----------|---------|----------|---------|---------|-------------------
File      | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s 
----------|---------|----------|---------|---------|-------------------
All files |      75 |       50 |     100 |      75 |                   
 index.ts |      75 |       50 |     100 |      75 | 7                 
----------|---------|----------|---------|---------|-------------------