#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
----------|---------|----------|---------|---------|-------------------