2013-07-28 7 views
6

Ho un semplice servizio che imposta i cookie in modo angolare, ma non esiste un modo ovvio per verificare che siano stati impostati in un test end-to-end.Come si testano i cookie di AngularJS in un test end-to-end?

Il codice di test è semplice come

var splashApp = angular.module('splashApp', ['ngCookies']); 
splashApp.controller('FooterController', function ($location, $cookies) { 
    $cookies.some_cookie = $location.absUrl(); 
}); 

ma non riesco a trovare nessuna documentazione su come testare. Ecco quello che ho trovato:

Ho anche provato

angular.scenario.dsl('cookies', function() { 
    var chain = {}; 
    chain.get = function(name) { 
    return this.addFutureAction('get cookies', function($window, $document, done) { 
     var injector = $window.angular.element($window.document.body).inheritedData('$injector'); 
     var cookies = injector.get('$cookies'); 
     done(null, cookies); 
    }); 
    }; 
    return function() { 
    return chain; 
    } 
}); 

Ma questo restituisce solo il.. cookie per il browser principale, non la pagina che voglio testare.

Qualche esempio su come fare questo?

+0

Immagino che tu stia facendo qualcosa con i cookie, magari cambiando una classe CSS, nel tuo programma - qualsiasi cosa leghi efficacemente il valore del cookie a qualcosa di esterno. Prova a provare quello invece? – jclancy

+0

Non lo sono, in realtà. I cookie vengono memorizzati ad un certo punto della sessione, quindi vengono inviati (automaticamente) al server insieme a una richiesta POST. Sfortunatamente non ci sono modifiche all'interfaccia a causa dei cookie. –

+0

Hai letto questo? http://pastie.org/4758669 – jclancy

risposta

0

Sembra che sia necessario utilizzare PhantomJS.

PhantomJS è un WebKit headless con scripting con un'API JavaScript. Lo standard offre supporto rapido e nativo per vari standard Web: gestione DOM, selettore CSS, JSON, Canvas e SVG. - PhantomJS website

Ha il supporto per i cookie personalizzati nella sua API. In termini di test, questa è probabilmente la scelta migliore. Si potrebbe anche voler guardare CasperJS per aiutare a testare la navigazione della pagina.

Problemi correlati