Попытка использовать подход, изложенный в этой публикации SO .
У меня есть следующее типизированное исключение:
/**
* @param message The error message
* @param value The value that violates the constraint
* @param field The name of the field
* @param type The expected type for the field
* @param code The application or module code for the error
*/
export class IsError extends Error {
constructor(
public message:string,
public value: any,
public field:string,
public type: string,
public code?:string) {
super(message);
this.name = 'IsError';
}
}
Эта функция выдает его:
export function isBooleanError(value: any, field:string, code?: string): void {
if (!isBoolean(value)) {
const message:string = `The field ${field} should be a boolean valued. It is set to ${value}. `;
throw new IsError(message, value, field, BOOLEAN_TYPE, code);
}
}
Это работает:
expect(()=>{isBooleanError({}, '')}).toThrow(Error);
Но это не так:
expect(()=>{isBooleanError({}, '')}).toThrow(IsError);
Кто-нибудь знает, почему последний не работает? Шутные журналы:
expect(received).toThrow(expected)
Expected name: "IsError"
Received name: "Error"