2016-08-23 46 views
1

我有這樣的代碼,我想測試:不能訪問/。然後從承諾觸發單元測試

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()); 

     } 
    ) 
); 

我覆蓋率報告稱回調位於。然後永遠不會執行。 我試過各種東西,但回調函數永遠不會執行。 如何觸發這部分?

Angular2版本:RC5 角CLI版本:webpack.2

回答

0

您可能需要

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

的測試運行才能夠等到測試完成。

+0

我在測試中添加了這一行,但它並沒有觸發它恐怕。 –

+0

我不知道你正在使用什麼Angular2版本,以及目前使用它們的方式是什麼。這幾乎隨任何更新而改變。試着額外用'async包裝'inject'?像'異步(注入(...))' –

+0

我編輯的OP與版本,異步沒有這樣做伎倆要麼=/ –