Как написать модульный тест, чтобы покрыть document.createElement, document.getElement и player.trigger в Жасмин - PullRequest
0 голосов
/ 28 марта 2020

Я совсем новичок в модульном тестировании. Может ли кто-нибудь помочь мне с тестированием этих двух функций в жасмине?

  keyEvent(event: KeyboardEvent) {
    myPlayer = videojs('myPlayerID');
    const rewindAmount = 10;
    if (event.keyCode === KEY_CODE.RIGHT_ARROW) {
      myPlayer.trigger('forward', {'amount': rewindAmount});
    }

    if (event.keyCode === KEY_CODE.LEFT_ARROW) {
      myPlayer.trigger('rewind', {'amount': rewindAmount});
    }
  }
  loadScript(media, id) {
    const script = document.createElement('script');
    script.src =
      "https://players.brightcove.net/" +
      playerData.accountId +
      "/" +
      playerData.playerId +
      "_default/index.min.js";
    const body = document.getElementById('videoBody');
    body.appendChild(script);
    script.onload = () => {
      this.callback(media, id);
    }
  }
  callback(media, id) {
  }

Это то, что я имею до сих пор. По-видимому, они вообще не будут покрывать какой-либо из этих выделенных кодов.

  it('should call forward and rewind when keyEvent', () => {
    myPlayer = videojs('myPlayerID');
    const event = new KeyboardEvent("key",{
      "key": "ArrowLeft"
    });
    const spy1 = spyOn(myPlayer, 'trigger').withArgs('rewind', {'amount': 5}).and.callThrough();
    component.keyEvent(event);
    myPlayer.trigger('rewind', {'amount': 5});
    expect(spy1).toHaveBeenCalledWith('rewind', {'amount': 5});
  });

  it('should loadScript', ()=> {
    const div = '<div id="videoBody" style="padding-top: 56.25%;">\n' +
      '\n' +
      '</div>';
    spyOn(component, 'loadScript');
    component.loadScript(fakeVideo,6117575484001);
    const script = document.createElement('script');
    script.src =
      "https://players.brightcove.net/" +
      playerData.accountId +
      "/" +
      playerData.playerId +
      "_default/index.min.js";
    fixture.detectChanges();
    const element = fixture.nativeElement.querySelector('#videoBody');
    expect(element).toEqual(div);
  });

Ниже приводится вывод.

document.create / получить отчет о покрытии кода

Отчет о покрытии кода myPlayer.trigger

...