使用 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
----------|---------|----------|---------|---------|-------------------
我不确定我对 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
----------|---------|----------|---------|---------|-------------------