Конструктор модульных тестов, который выдает ошибку - PullRequest
0 голосов
/ 29 августа 2018

У меня есть конструктор, который внедряет объект конфигурации. Я делаю некоторую проверку объекта в конструкторе. Если проверка не пройдена, я хочу выдать ошибку, описывающую пользователю, что пошло не так.

Как мне проверить это с Angular и Jasmine ?

Вот как я это делаю сейчас, но это возвращает неудачный тест:

import { TestBed, inject } from '@angular/core/testing';

import { AwsCognitoService } from './aws-cognito.service';
import { AWS_COGNITO_CONFIG, AwsCognitoConfig } from './aws-cognito.config';

describe('AwsCognitoService', () => {
  beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [
        AwsCognitoService,
        {
          provide: AWS_COGNITO_CONFIG,
          useValue: new AwsCognitoConfig({
            region: 'eu-west-1'
          })
        }
      ]
    });
  });

  it('should throw error when missing userPoolId or identityPoolId', inject(
    [AwsCognitoService],
    (service: AwsCognitoService) => {
        expect(service).toThrowError('Missing required configuration property: userPoolId or identityPoolId');
    }
  ));
});

Полный источник теста: Пример стекаблиц

1 Ответ

0 голосов
/ 29 августа 2018

Вот блик стека

Как вы, возможно, знаете, конструкторы вызываются при создании нового экземпляра класса.

Функция expect Жасмина может принимать функцию и изолировать ее, что позволяет вам ожидать после этого.

С помощью этого синтаксиса вы создаете изолированную функцию, которую Жасмин может отслеживать. И, как вы можете видеть, ваш тест проходит.

it('should throw error with missing param', () => {
  expect(() => new AwsCognitoService({} as any)).toThrowError();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...