domingo, 10 de janeiro de 2016

Como mockar o document com Jasmine?

Oi :)

Eu tinha no meu código AngularJs (Ionic) o seguinte trecho de código:
document.getElementById("canvasId").getContext("2d")

Quando eu fui rodar o meu teste com Jasmine obtive o erro:
User Controller
    ? when the user creates the product
        TypeError: 'null' is not an object (evaluating 'document.getElementById('canvasId').getContext')
            at C:/Dropbox/workspaces/ws-ionic/my-app/www/js/user/userCtrl.js:9
            at C:/Dropbox/workspaces/ws-ionic/my-app/www/lib/angular/angular.js:11659
            at C:/Dropbox/workspaces/ws-ionic/my-app/www/lib/angular/angular.js:11745

Para resolver isso eu tinha que fazer um mock da variável document.

Para isso, bastou adicionar as duas linhas abaixo no beforeEach do meu teste (ou em qualquer lugar do teste antes de chegar nas linhas que geraram o erro):
$document = angular.element(document);
$document.find('body').append('<canvas id="bar"></canvas>');

É isso aí, abraço!!
Adriano Schmidt

Um comentário: