使用内存作为数据源的环回测试

Are*_*aas 9 environment-variables node.js strongloop loopbackjs

我正在尝试在进行集成测试时使用内存连接器作为数据源.但似乎总是连接到mongodb-datasource.

我所做的一个主要工作是将每个模型的数据源更改为内存.但必须有更好的方法来做到这一点.我正在从gulp任务中运行我的测试.我的roflmao模型 - 记忆 - 黑客:

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

有没有办法更改应用程序的数据源?或者我是否必须更改每个模型的数据源..?

这样做的一种方法是在测试期间更改环境变量,但到目前为止,没有运气..我正在使用gulp-task预处理执行此操作.

希望通过更改环境变量,它将使用datasources.integrationtesting.js,其中我将内存作为数据源.

我的任务:

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

我正在使用:

  • 环回测试功能
  • 一饮而尽,摩卡

感谢任何评论.. :)

jak*_*lla 7

我认为您正在寻找的是特定环境的配置文件.基本上,您只需创建一个具有相同名称但在不同环境中具有不同实现的数据源.您的datasources.json文件将是默认文件,但datasources.development.json如果NODE_ENV设置为将使用development.

从该链接页面,您可能在datasources.json中有此:

{
  db: {
    connector: 'mongodb',
    database: 'myapp',
    user: 'myapp',
    password: 'secret'
  }
}
Run Code Online (Sandbox Code Playgroud)

这在datasources.development.json中:

{
  db: {
    connector: 'memory'
  }
} 
Run Code Online (Sandbox Code Playgroud)

  • 如上所述,我在gulp任务中启动测试.我尝试将环境更改为"test"以允许特定于环境的配置,但它似乎没有使用test-configs .. (3认同)