Создание теста с использованием Mocha / Chai / TypeScript, который завершается с ошибкой, когда в функцию отправляется другое количество или тип аргументов

#typescript #unit-testing #mocha.js #chai

#typescript #модульное тестирование #mocha.js #chai

Вопрос:

Я не уверен, правильно ли я понимаю chai, но есть ли способ проверить, что функция завершится с ошибкой, если она отправила неправильное количество (или тип) аргументов? Например:

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

Но MyClass() ожидает аргумент в своем определении, что-то вроде этого:

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

Спасибо за помощь.

Ответ №1:

Вы можете сделать это с помощью метода .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                 
----------|---------|----------|---------|---------|-------------------