【问题标题】:Can't access / trigger .then from promise in unit test无法从单元测试中的promise访问/触发.then
【发布时间】:2016-08-23 17:00:44
【问题描述】:

我有这段代码要测试:

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

【问题讨论】:

    标签: angular promise karma-jasmine


    【解决方案1】:

    你可能需要

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

    让测试运行者能够等待您的测试完成。

    【讨论】:

    • 我在测试中添加了这一行,但恐怕它不会触发它。
    • 我不知道您使用的是什么 Angular2 版本以及当前的使用方式。这几乎随着任何更新而改变。尝试另外包装injectasync? like async(inject(...))`
    • 我用版本编辑了 OP,异步也没有用 =/
    • 在这个例子中 github.com/angular/angular/blame/… 他们注入 AsyncTestCompleter 并在其上调用 done()。这将是something.then((data) => data()).then(_ => async.done())
    • 我无法导入 AsyncTestCompleter,testing_internal 不存在。尝试了其他软件包,但没有运气。
    猜你喜欢
    • 2018-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-20
    • 1970-01-01
    • 2018-05-18
    • 1970-01-01
    相关资源
    最近更新 更多