2012-08-09 25 views
10

Vorrei utilizzare Phantomjs e Jasmine per il test delle unità javascript. Il sito Web di Phantomjs consiglia di utilizzare una cosa separata per gestire questo, in particolare, PhantomJasmine. Ho scaricato PhantomJasmine e ho eseguito l'esempio. Tutto è andato alla perfezione. Ho quindi aggiunto la riga var system = require('system'); all'inizio di example_spec.js. Ora il Phantomjs genera un errore quando provo a eseguire l'esempio. Ricevo "ReferenceError: Can not find variable: require". Quindi, voglio avere bisogno di cose come avviare il browser, ma sembra che non sia possibile combinare la sintassi di jasmine AND phantomjs. Posso eseguire solo jasmin usando Phantomjs. Come posso usare entrambi nello stesso file? Mi piace:PhantomJS "Impossibile trovare la variabile: require" quando si utilizza PhantomJasmine

console.log('Loading a web page'); 
var page = new WebPage(); 
var url = "http://www.phantomjs.org/"; 
page.open(url, function (status) { 
    //Page is loaded! 
    describe("A suite", function() { 
     it("contains spec with an expectation", function() { 
     expect(true).toBe(true); 
     }); 
    }); 
    phantom.exit(); 
}); 

risposta

4

Non è proprio come dovresti usarlo. Il codice per controllare i phantomjs non deve essere confuso con le specifiche del gelsomino e viceversa.

È necessario separare le specifiche in file .js e creare un setup standard di gelsomino con un runner di specifiche HTML che carica i file con estensione .js e apre il file HTML in phantomjs.

Un'altra soluzione è utilizzare grunt con phantomjs e gelsomino per eseguire automaticamente le specifiche di jasmine.

https://github.com/cowboy/grunt
https://github.com/creynders/grunt-jasmine-task

+0

ho i miei file separati. Ho fatto lo stesso errore. Il contenuto interno del mio tag head nel file html è: dove execPage.js contiene puro codice phantomjs e jaztest1 contiene codice puro jasmine. Ho anche guardato in Grunt. E 'solo un altro è stato quello di eseguire Jasmine con fantasma js. Devo sapere come eseguire gli script di Jasmine AND Phantomjs l'uno con l'altro. es .: vai alla pagina, esegui jasmine. – Hohohodown

+0

Penso che sto migliorando il problema. Ecco lo scenario: ho tests.js che è alcuni test di gelsomino. Voglio navigare su google.com e verificare che la barra di ricerca si presenti. google.com non include alcun gelsomino. Come posso fare questo? – Hohohodown

+0

Chiama lo script jasmine nella pagina html, non tramite PhantomJS. Fondamentalmente lo si imposta ESATTAMENTE come si farebbe quando si eseguono i test di gelsomino manualmente e quindi si passa semplicemente l'URL di quella pagina HTML a PhantomJS per eseguirlo nella riga di comando. – Creynders

Problemi correlati