无法访问/触发。然后单元测试中的promise

时间:2016-08-23 08:29:08

标签: angular promise karma-jasmine

我有我要测试的代码:

public renderPage(page: number) {
    return this.pdfVar.getPage(page).then((page: any) => {
      console.log('PAGE', page);
      let viewport = page.getViewport(1);
      let container = this.element.nativeElement.querySelector('div');
      let canvas: HTMLCanvasElement = document.createElement('canvas');

      if (!this.originalSizeVar) {
        viewport = page.getViewport((this.element.nativeElement.offsetWidth * 1)  / (viewport.width * 1));
      }

      if (!this.showAllVar) {
        this.removeAllChildNodes(container);
      }

      container.appendChild(canvas);

      canvas.id = 'pdfCanvas';
      canvas.height = viewport.height;
      canvas.width = viewport.width;

      let context = canvas.getContext('2d');

      page.render({
        canvasContext: context,
        viewport: viewport
      });
    });

这是我的测试:

it('render page',
    inject(
      [
        PdfViewerComponent
      ],
      (
        component: PdfViewerComponent
      ) => {
        component.pdfVar = mockPdfVar;
        let something = component.renderPage(2);
        something.then((data) => data());

      }
    )
  );

我的报道报告说,.then中的回调永远不会被执行。 我尝试了各种各样的东西,但回调函数永远不会执行。 如何触发此部分?

Angular2版本:RC5 Angular-CLI版本:webpack.2

1 个答案:

答案 0 :(得分:0)

您可能需要

return something.then((data) => data());

让测试跑步者能够等待你的测试完成。