2013-04-26 4 views
6

sto usando Grunt, PhantomJS, e il plugin "guardare" per eseguire i miei test QUnit mentre io sviluppo (separato dal CI). Mi piacerebbe essere in grado di concentrarmi su uno specifico modulo QUnit mentre sto lavorando sul codice su cui i test del modulo sono focalizzati. Durante l'esecuzione di QUnit nel browser posso specificare un modulo da eseguire (rispetto a tutti i test).Specificare modulo QUnit quando corro con Grunt

Quindi la domanda è, posso dire il compito qunit Grunt per eseguire solo un certo modulo? Sto pensando di un argomento della riga di comando in modo che io non devo cambiare il mio Gruntfile, qualcosa di simile:

~$ grunt qunit --module="test this stuff, test that stuff" 

UPDATE

Per essere chiari, quello che voglio fare funzionare i moduli vengono creati in module() metodo di una suite di test utilizzando del QUnit:

module("group a"); 
test("a basic test example", function() { 
    ok(true, "this test is fine"); 
}); 
test("a basic test example 2", function() { 
    ok(true, "this test is fine"); 
}); 

module("group b"); 
test("a basic test example 3", function() { 
    ok(true, "this test is fine"); 
}); 
test("a basic test example 4", function() { 
    ok(true, "this test is fine"); 
}); 

nell'esempio di cui sopra, questo codice è tutto in una suite di test, ma nel file di test HTML risultante ho un menu a discesa per funzionare sia modulo "gruppo a" o modulo "gruppo b" (attraverso l'interfaccia utente di QUnit). Quello che voglio è essere in grado di specificare, a livello di codice, che voglio eseguire un modulo specifico tramite l'attività grunt qunit.

risposta

0

Se si imposta il config per grugnito-qunit come questo:

grunt.initConfig({ 
    qunit: { 
    module1: { 
     options: { 
     urls: [ 
     'http://localhost:8000/test/module1/foo.html', 
     'http://localhost:8000/test/module1/bar.html', 
     ] 
     } 
    }, 
    module2: { 
     options: { 
     urls: [ 
     'http://localhost:8000/test/module2/foo.html', 
     'http://localhost:8000/test/module2/bar.html', 
     ] 
     } 
    } 
    } 
    ... 

È possibile eseguire un singolo modulo come grunt qunit:module1

+0

Mentre vero, speravo di trovare qualcosa di più generico. Fondamentalmente, quando aggiungo un modulo alla mia suite di test, non voglio dover creare un nuovo modulo target per esso. Grazie per la pubblicazione però. – jakerella

+0

Bene, puoi creare un'attività che appare in './Test' e configura un modulo per ciascuna sottodirectory, quindi li accoda per l'esecuzione e accetta un argomento di moduli su cui filtrare. – Stuart

+0

Sì, ma mi riferisco di più alla possibilità di eseguire 'module's di QUnit. Quello che hai qui è la creazione di diverse suite di test html che agiscono in quel ruolo. Quello che voglio però è essere in grado di eseguire il modulo dichiarato nella suite di test, non un file html appena creato. – jakerella

0

Credo che una soluzione praticabile potrebbe essere quella di definire un'opzione di filtro del modulo, e se esiste, aggiungilo agli URL. Qualcosa di simile nel Gruntfile.js

var moduleFilter = ''; 
if (grunt.option('module')) { 
    moduleFilter = '?module=' + grunt.option('module') 
} 

poi usarlo:

grunt.initConfig({ 
    qunit: { 
    options: { 
     ... 
     urls: [ 
      'http://localhost:3000/qunit' + moduleFilter 
     ] 
    } 
    } 
}); 

Si noti che questo lavoro per un solo modulo. Forse (ma non testato) è possibile utilizzare il parametro query filter anziché il modulo, e denominare i moduli in modo che corrispondano al filtro, in modo da poterli raggruppare.

Nota: l'esecuzione di più moduli non è qualcosa che sarà supportato da QUnit.

Riferimenti:

+0

Che sicuramente sembra una soluzione più praticabile, lo proverò quando tornerò su questo progetto. – jakerella