2016-08-23 5 views
1

У меня есть этот код, который я хочу, чтобы тест:не может получить доступ/вызвать .then с обещания в единичном испытании

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? например, 'async (inject (...))' –

+0

Я отредактировал OP с версией, async не выполнил трюк:/ –

Смежные вопросы