Grunt和hood.ie测试数据库

时间:2014-06-02 07:49:20

标签: javascript gruntjs couchdb jasmine hoodie

我目前正使用AngularJSGruntKarmaJasmineProtractor上运行我的测试套件。我正在使用的数据库是hood.ie,它是CouchDB之上的一个库。我在我的Gruntfile中使用以下代码启动hood.ie:

hoodie: {
  start: {
    options: {
      callback: function(config) {
        grunt.config.set('connect.proxies.0.port', config.stack.couch.port);
      }
    }
  }
},

但是,我希望有一个单独的数据库来运行测试,之后会自动重置。这样,生产数据就不会与测试发生冲突。

我该如何处理?我会假设有一种标准的方式来做到这一点,因为我可以想象其他人遇到了同样的问题,但我无法在互联网上找到任何东西。

2 个答案:

答案 0 :(得分:2)

目前,这似乎是不可能的,因为连帽服务器不支持它。解决此问题的最佳方法是在Hood.ie server Github repository处自行修改,方法是添加一个参数来定义存储数据的文件夹,此时硬编码为数据' (https://github.com/hoodiehq/hoodie-server/blob/master/lib/core/environment.js#L48

类似的东西应该有效:

app_path: path.resolve(project_dir, argv.folder || 'data')

答案 1 :(得分:0)

由于连帽任务是一个'多任务',你可以在你的hood.ie特定于测试的grunt任务中有一个测试目标,然后在用于运行测试的grunt命令中引用它,例如:

hoodie: {
  start: {
    options: {
      callback: function(config) {
        grunt.config.set('connect.proxies.0.port', config.stack.couch.port);
      }
    }
  },
  test: {
    options: {
      callback: function(config) {
        // Make test specific changes here.
      }
    }
  }
}

// The task that runs tests first starting test deps. 'runtests' can be anything you want.
grunt.registerTask('test', 'Run unit tests', ['hoodie:test', 'runtests']);

注意:这将意味着您要引用您需要明确的连帽任务的任何其他时间,否则将运行所有指定的目标。 See this documentation on multitasks for more info。在这个例子中,你要将连帽衫改为连帽衫:开始按照之前的定义运行“开始”任务。