8

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

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

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

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

4

2 回答 2

2

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

与此类似的东西应该可以工作:

app_path: path.resolve(project_dir, argv.folder || 'data')
于 2014-06-23T07:42:42.700 回答
0

由于 hoodie 任务是一个“多任务”,你可以在你的 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']);

注意:这意味着您在引用 hoodie 任务时需要明确,否则将运行所有指定的目标。有关更多信息,请参阅有关多任务的文档。在此示例中,您将 hoodie 更改为 hoodie:start 以运行之前定义的“开始”任务。

于 2014-06-17T10:30:33.307 回答