Тестирование на типизированные исключения с Jest - PullRequest
0 голосов
/ 06 марта 2019

Попытка использовать подход, изложенный в этой публикации 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"

1 Ответ

0 голосов
/ 06 марта 2019

Мне пришлось добавить это в конструктор исключения:

  super(message);
  Object.setPrototypeOf(this, IsError.prototype);      
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...