2017-02-07 1 views
0

Un projet que je travaille utilise Pusher, ainsi que Karma pour les tests unitaires. Les tests unitaires sont en échec, citant l'erreur suivante:Tests unitaires de rupture utilisant AngularJS, Pusher + Karma

ReferenceError: Can't find variable: Pusher 
    at runBlock (/vagrant/front/src/app/index.run.js:9) 
    at invoke (/vagrant/front/bower_components/angular/angular.js:4771) 
    at /vagrant/front/bower_components/angular/angular.js:4578 
    at forEach (/vagrant/front/bower_components/angular/angular.js:325) 
    at createInjector (/vagrant/front/bower_components/angular/angular.js:4578) 
    at WorkFn (/vagrant/front/bower_components/angular-mocks/angular-mocks.js:3120) 

Je regardais dans index.run.js et trouvé la question:

/** @ngInject */ 
    function runBlock($log,$rootScope) { 

    $rootScope.wf = { 
     api: '/api/v1', 
     dateFormat: 'dd.MM.yyyy', 
     dataRefreshListeners:{} 
    }; 


    $rootScope.wf.pusher = new Pusher('3e2d8ab440fad96e67ff', { 
     cluster: 'eu', 
     encrypted: true 
    }); 

    } 

Je pensais que ce serait un cas simple de définir Pusher, que ce soit dans les paramètres de la fonction, ou stub pour les tests unitaires.

J'ai trouvé la bibliothèque pusher-test-stub et l'ai ajoutée. Que ce soit réglé toutes mes erreurs précédentes, mais m'a laissé celui-ci:

PhantomJS 1.9.8 (Linux 0.0.0) ERROR 
    TypeError: 'undefined' is not an object (evaluating 'PusherDefinition.Util') 
    at /vagrant/front/bower_components/pusher-test-stub/dist/pusher-test-stub.js:155 


[08:51:49] 'test' errored after 3.39 s 
[08:51:49] Error: Failed 1 tests. 

J'ai commencé à déconner avec le fichier pusher-test-stub.js, mais compris la question n'a pas été va être avec cette bibliothèque.

J'ai également jeté un oeil dans mon fichier karma.conf.js, en prenant note des chemins de répertoire. La modification de ces valeurs n'a pas modifié le message d'erreur de test unité en échec dans les deux cas (avec pusher-test-stub.js et sans).

Répondre

0

PhantomJS 1.9.8 est actuellement très vieux (2+ ans) et est susceptible de se casser lorsque vous travaillez avec des applications web modernes.

Vous devriez essayer 2.5 beta qui dispose d'un moteur récent Webkit: PhantomJS downloads

+0

merci pour la réponse, PhantomJS mises à jour dans le package.json et RAN NPM installer - pas de différence. J'ajoute aussi que les tests unitaires fonctionnaient précédemment. – dyatesupnorth

+1

La version du paquet npm phantomjs n'est pas la même que la version du binaire phantomjs lui-même. Quelle version est-il maintenant? 'phantomjs --version' – Vaviloff

+1

Peut-être la version PhantomJS n'est pas responsable de l'erreur, mais vous êtes généralement mieux avec une version plus récente de ce logiciel. – Vaviloff