2013-05-13 17 views
6

Quando si utilizza la libreria di prova javascript karma (née Testacular) insieme a Rails, dove devono essere collocati i file di test e i dati falsificati?Karma + Rails: struttura del file?

Sembra strano averli in/assets/perché in realtà non vogliamo servirli agli utenti. (Ma immagino che se non siano semplicemente mai precompilati, allora non è un problema vero, vero?)

risposta

3

Abbiamo finito per mettere i test e dati falsi sotto la cartella spec dell'app di Rails e configurare Karma per importarli così come i nostri testati codice da app/assets.

Lavora per noi. Altre idee sono benvenute.

nostro config/karma.conf.js di file:

basePath = '../'; 

files = [ 
    JASMINE, 
    JASMINE_ADAPTER, 

    //libs 
    'vendor/assets/javascripts/angular/angular.js', 
    'vendor/assets/javascripts/angular/angular-*.js', 
    'vendor/assets/javascripts/jquery-1.9.1.min.js', 
    'vendor/assets/javascripts/underscore-min.js', 
    'vendor/assets/javascripts/angular-strap/angular-strap.min.js', 
    'vendor/assets/javascripts/angular-ui/angular-ui.js', 
    'vendor/assets/javascripts/angular-bootstrap/ui-bootstrap-0.2.0.min.js', 

    //our app! 
    'app/assets/javascripts/<our-mini-app>/**', 

    // and our tests 
    'spec/javascripts/<our-mini-app>/lib/angular/angular-mocks.js', 
    'spec/javascripts/<our-mini-app>/unit/*.coffee', 
    // mocked data 
    'spec/javascripts/<our-mini-app>/mocked-data/<data-file>.js.coffee', 
]; 

autoWatch = true; 

browsers = 'PhantomJS'.split(' ') 

preprocessors = { 
    '**/*.coffee': 'coffee' 
} 
+0

Ho creato una cartella/spec/angolare dove inserisco tutti i file di test, con/spec/angular/e2e,/spec/angular/unit, ecc ... Ma come hai configurato il karma.conf.js? Non sono sicuro se l'attributo proxy sia corretto: 'proxies = { '/': 'http: // localhost: 3000 /' };' Sto avendo errori per eseguire anche un semplice test, è come javascript le fonti da testare non sono incluse. – p1nox

+0

PD: Sto lavorando con il codice legacy che usa application.js.erb come manifest per tutti i file javascript, anche angolari, nel mio karma.conf.js ho 'files = [ ANGULAR_SCENARIO, ANGULAR_SCENARIO_ADAPTER, '. ./../app/assets/javascripts/application.js ', ' */* Spec.js ' ]; ' – p1nox

+0

BTW Sto testando se un modulo chiamato" StSelector "è lì e funziona (http: //www.yearofmoo.com/2013/01/full-spectrum-testing-with-angularjs-and-testacular.html#testing-modules), e sto ricevendo 'Midway: Moduli di test Modulo StSelector: dovrebbe essere registrato FAILED \t Errore: nessun modulo: StSelector' – p1nox

8

Via questo post: https://groups.google.com/forum/#!topic/angular/Mg8YjKWbEJ8

sto sperimentando con qualcosa che assomiglia a questo:

// list of files/patterns to load in the browser 
files: [ 
    'http://localhost:3000/assets/application.js', 
    'spec/javascripts/*_spec.coffee', 
    { 
    pattern: 'app/assets/javascripts/*.{js,coffee}', 
    watched: true, 
    included: false, 
    served: false 
    } 
], 

E orologi file app js, ma doesn li includi o li serva, includendo invece i file application.js serviti da rotaie e ruote dentate.

Ho anche giocato con https://github.com/lucaong/sprockets-chain, ma non ho trovato un modo per utilizzare requirejs per includere file js da gems (come jquery-rails o angularjs-rails).

+0

Questa sembra una buona soluzione. Suppongo che sia un po 'più lento della soluzione che suggerisce @ alan-h. – opsb

+1

Mi è piaciuta questa soluzione. Risolve il problema del caricamento dei file con .js.erb. – Adrian

+0

Questo ha senso. –

Problemi correlati