Jest с узлом и TypeScript - проверка ошибки броска из метода stati c в Singleton - PullRequest
0 голосов
/ 27 февраля 2020

У меня следующая проблема. У меня есть синглтон-класс. Есть метод getInstance stati c, который вызывает конструктор. singleton.ts:

class Singleton {
   private static singletonInstance: Singleton;
   private constructor(){
      ...doSomething;
   }
   public static getInstance(): Singleton {
      if(!Singleton.singletonInstance){
          Singleton.singletonInstance = new Singleton();
      }
      throw new Error('stupid error');
   }
}

singleton.spe c .ts:

it('getInstance should throw an error', () => {
   expect(Singleton.getInstance()).toThrow(new Error('stupid error'));
})

Ошибка 'getInstance должна вызвать ошибку', потому что ... getInstance () didn ' выдает ошибку.

На выходе консоли я могу заметить, что ошибка была выброшена - она ​​печатает «глупую ошибку».

1 Ответ

2 голосов
/ 27 февраля 2020

В соответствии с примером, упомянутым в документах здесь , вам необходимо предоставить анонимную функцию для проверки этого:

it('getInstance should throw an error', () => {
   expect(() => Singleton.getInstance()).toThrow(new Error('stupid error'));
})

По сути, jest вызывает данную функцию, а затем определяет бросил ли это ошибку или нет. В вашем случае, поскольку Singleton.getInstance() уже выдал ошибку, результат не может быть вызван.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...