2012-10-22 13 views
8

Come si integrano i dispositivi (html) con testacular? C'è qualche raccomandazione per eseguire test basati su DOM o è un anti-pattern?Errore durante l'integrazione di html con testacularjs

Obiettivo: Sto provando a testare un modulo personalizzato che analizza l'albero DOM e crea una nuova struttura dati. L'albero DOM può essere dinamico (come i contenuti di un editor html/markdown) e quindi non è un buon candidato per test end-to-end

Problema: sto provando a usare jasmine-jquery per questo test DOM e nel mio testacro .conf.js, ho la sezione per consentire il caricamento di file html nel browser.

 

// list of files/patterns to load in the browser 
files = [ 
    JASMINE, 
    JASMINE_ADAPTER, 
    'test/spec/**/*.js', 
    'test/fixtures/*.html' **/* Needs to be included here to be served */** 
]; 
 

Tuttavia nel mio test corridore sulla linea di comando, ottengo il seguente messaggio di errore quando mi cade l'apparecchio html (anche prima di scrivere alcun codice di gelsomino jQuery per caricare il dispositivo):

 

Chrome 22.0 **ERROR** 
    Uncaught SyntaxError: Unexpected token < at /Users/myUser/myProject/test/fixtures/fixture_template.html:1 Chrome 22.0: Executed 0 of 0 ERROR (0.143 secs/0 secs) 
 

MODIFICA: un altro modo per fare la stessa domanda: come faccio a ottenere testimo per servire html e non saltare in aria il corridore di prova?

Come ho già detto, ho bisogno di includere i 'test/fixtures/*. Html" nella configurazione, ma il test runner soffia proprio in cima.

risposta

9

versione attuale di testacularjs non può sostenere questo. Tuttavia, il autore di testacularjs (Vojta Jina), mi ha suggerito di usare una soluzione proxy per risolvere questo servendo il codice html attraverso un server web diverso. per chi fosse curioso, ecco la fine di porre fine passaggi per ottenere questo lavoro.

  • Per prima cosa esegui il webserver eseguendo un comando come il seguente

    python -m SimpleHTTPServer 3502 &

  • Drop la file fixture (s) in posizione appropriata. Il mio era di test/fixtures/first.html

    Ora si dovrebbe essere in grado di visitare [http: // localhost: 3502/test/fixtures/first.html] e vedere il tag quando si ispezionare sorgente della pagina

  • Modifica testacular.conf.js aggiungere il blocco di configurazione

    
    proxies = { 
    '/fixtures' : 'http://localhost:3502/' 
    }; 
    
  • Modifica prova la vostra unità gelsomino di avere un blocco come il seguente

    
    beforeEach(function(){ 
         jasmine.getFixtures().fixturesPath = '/fixtures/test/fixtures'; 
        }); 
    

Ora si dovrebbe essere in grado di loadfixture/readfixture

6

Come indicato sul http://testacular.github.com/0.6.0/config/files.html, a partire dalla versione 0.5.2 è possibile utilizzare la nuova sintassi di configurazione:

files = [ 
    JASMINE, 
    JASMINE_ADAPTER, 
    'test/spec/**/*.js', 
    { 
    pattern: 'test/fixtures/*.html', 
    watched: true, 
    included: false, 
    served: true 
    } 
]; 

Ho appena provato e funziona bene per me.

+0

Bello, stavo aspettando questo! – monkeyboy

+0

+1, ma almeno nelle versioni più recenti è anche necessario modificare l'elenco predefinito dei precompressori inclusi in modo da non includere quello di html2js. – AJJ

Problemi correlati