2012-06-13 16 views
10

Sto cercando di convertire dai test Jasmine ai test Mocha per la sua capacità di fare Before (all), le sue funzionalità di reporting e il suo supporto per coffeescript.Supporto per dispositivi compatibili con Mocha

Una cosa che non sono stato in grado di trovare è se Mocha (o in combinazione con una libreria di asserzioni compatibile) supporta i dispositivi come fa jasmine-jquery (https://github.com/velesin/jasmine- jquery). Esiste una tale funzionalità per Mocha?

Sto provando a testare del codice nel browser (quindi lo eseguirò con il programma di test html) che manipola il DOM. Non desidero utilizzare zombiejs perché preferirei eseguirlo nell'ambiente in cui sto eseguendo il test.

Modifica: solo per riferimento, durante la ricerca di una soluzione, mi sono imbattuto usando grunt + mocha con un implementazione di phantomjs. Anche questo non funziona per il mio caso, perché mi piacerebbe utilizzare una versione personalizzata del webkit.

risposta

10

Da quello che sono stato in grado di capire, la risposta è no. Ciò è probabilmente dovuto al fatto che Mocha è stato inizialmente pensato per supportare node.js. Nel nodo, la nozione di fixture in jasmine-jquery non esiste perché non esiste un DOM/browser.

Guardando il supporto delle fixture per il plugin jasmine-jquery, mi rendo conto ora che potrebbe non essere così difficile costruire questa funzionalità da solo. Il meccanismo di base è usare jQuery per aggiungere un modello esterno al DOM, pur mantenendo i riferimenti ad esso in modo tale che sia possibile effettuare operazioni di pulizia e memorizzazione nella cache.

Voglio aggiornare questa risposta se decido di pubblicare qualcosa su github

Edit: qui è - https://github.com/badunk/js-fixtures. Il codice e le specifiche sono state essenzialmente copiate da jasmine-jquery con le dipendenze rimosse.

+0

js-fixtures replica anche caricando JSON, come 'getJSONFixture()' in jasmine-jquery? –

+0

no, che non è attualmente supportato - lo esaminerò come un miglioramento. Benvenuto del PR: https://github.com/badunk/js-fixtures/issues/12 – badunk

+0

È ancora così? Ci sono funzioni di setup e di rimozione in Mocha e supportano l'esecuzione di test nel browser. – Indolering

0

Hai provato zombie.js? Si installa con NPM e sembra piuttosto agnostico per testare il framework.

Questo mi ha dato un oggetto finestra completamente funzionante che potrei decorare con jQuery.

Browser = require 'zombie' 

browser = new Browser() 
global.window = browser.window 
require '../src/js/vendor/jquery-1.7.1.min.js' 

UPDATE:

Ho rivisitato questo problema e sembra che jQuery + jsdom (via NPM) sembrano essere una soluzione più popolare e leggero. Esempio: http://www.netboy.pl/2012/10/testing-jquery-code-with-mocha-chai-and-jsdom/

+0

Link non funziona più. – CodingWithSpike

+0

JSDOM e Zombie sono un po 'problematici. Ad esempio, nessun supporto per 'classList',' dataset' e un sacco di altre cose che volevo usare. Sembra che tornerò ai phantomjs con questo. –