Как выполнить модульное тестирование сценариев ошибок для создания элемента DOM с угловым - PullRequest
0 голосов
/ 11 октября 2019

Я создал службу для добавления тега canonical.

Ниже приведен код службы,

  createLinkForCanonicalURL(tagData) {
    try {
      if (!tagData) {
        return;
      }
      const link: HTMLLinkElement = this.dom.createElement('link');

      Object.keys(tagData).forEach((prop: string) => {
        link.setAttribute(prop, tagData[prop]);
      });

      this.dom.head.appendChild(link);
    } catch (e) {}
  }

Я мог бы успешно объединить эту функцию со следующей спецификацией.

  it('should create link tag', () => {
    seoLinkService.createLinkForCanonicalURL({rel: 'canonical', href: 'www.example.org'});
    expect(document.querySelector("link").getAttribute('rel')).toEqual('canonical');
    expect(document.querySelector("link").getAttribute('href')).toEqual('www.example.org');
  });

Но я пытаюсь протестировать сценарии ошибок.

Ниже приведена спецификация,

  it('should not create link tag', () => {
    seoLinkService.createLinkForCanonicalURL(undefined);
    expect(document.querySelector("link").getAttribute('rel')).toBeFalsy();
  });

С приведенным выше кодом моя спецификация не работает с сообщением ниже.

Ожидается, что «канонический» будет ложным.

Как проверить сценарий ошибки. Пожалуйста, помогите.

1 Ответ

0 голосов
/ 11 октября 2019

Вам необходимо удалить ранее созданный тег ссылки в beforeEach.

Как это:

describe('test', () => {

  ...

  beforeEach(() => {
    document.querySelectorAll("link").forEach(e => e.remove());
  })


  it('should create link tag', () => {
    seoLinkService.createLinkForCanonicalURL({rel: 'canonical', href: 'www.example.org'});
    expect(document.querySelector("link").getAttribute('rel')).toEqual('canonical');
    expect(document.querySelector("link").getAttribute('href')).toEqual('www.example.org');
  });

  it('should not create link tag', () => {
    seoLinkService.createLinkForCanonicalURL(undefined);
    expect(document.querySelector("link").getAttribute('rel')).toBeFalsy();
  });
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...