2015-04-30 12 views
8

Sto provando a utilizzare il connettore di memoria come origine dati quando si eseguono i test di integrazione. Ma sembra connettersi sempre alla fonte dati mongodb.Test di loopback con memoria come origine dati

Uno degli hack principali che ho fatto è quello di cambiare l'origine dati per ogni modello in memoria. Ma ci deve essere un modo migliore per farlo. Sto eseguendo i miei test da un ingorgo. Il mio roflmao model-memory-hack:

var models = require('../server/model-config.json'); 
    for (var key in models) { 
    var model = loopback.getModel(key); 
    loopback.configureModel(model, {dataSource: memory}); 
    } 
} 

C'è un modo per modificare l'origine dati per l'app? O devo cambiare l'origine dati per ogni singolo modello ..?

Un modo per fare ciò è modificare la variabile di ambiente durante il test, ma finora, senza fortuna .. Lo sto facendo con il pre-processo di gulp-task.

Si spera che, cambiando la variabile di ambiente, venga utilizzato datasources.integrationtesting.js, in cui dispongo di memoria come origine dati.

mio sorso-task:

return gulp.src('integration-tests/*.js') 
.pipe($.preprocess({context: {NODE_ENV: 'integrationtesting'}})) 
.pipe($.mocha()) 

sto usando:

  • loopback-test
  • gulp-moka

Apprezziamo qualsiasi commento ..:)

+0

Cosa sarebbe risolvere questo problema è quello di essere in grado di cambiare il NODE_ENV durante il test ... –

risposta

7

Penso che tu sia stiamo cercando sono environment-specific configuration files. Fondamentalmente, si crea semplicemente un'origine dati con lo stesso nome, ma diverse implementazioni in ambienti diversi. Il tuo file datasources.json sarebbe l'impostazione predefinita, ma verrà utilizzato datasources.development.json se NODE_ENV è impostato su development.

Da quel pagina collegata, si potrebbe avere questo datasources.json:

{ 
    db: { 
    connector: 'mongodb', 
    database: 'myapp', 
    user: 'myapp', 
    password: 'secret' 
    } 
} 

E questo a datasources.development.json:

{ 
    db: { 
    connector: 'memory' 
    } 
} 
+2

Come spiegato, accendo i test in un compito di gulp. Provo a cambiare l'ambiente in "test" per consentire la configurazione specifica per l'ambiente, ma non sembra che utilizzi i test-configs .. –