我目前正使用AngularJS,Grunt,Karma和Jasmine在Protractor上运行我的测试套件。我正在使用的数据库是hood.ie,它是CouchDB之上的一个库。我在我的Gruntfile中使用以下代码启动hood.ie:
hoodie: {
start: {
options: {
callback: function(config) {
grunt.config.set('connect.proxies.0.port', config.stack.couch.port);
}
}
}
},
但是,我希望有一个单独的数据库来运行测试,之后会自动重置。这样,生产数据就不会与测试发生冲突。
我该如何处理?我会假设有一种标准的方式来做到这一点,因为我可以想象其他人遇到了同样的问题,但我无法在互联网上找到任何东西。
答案 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。在这个例子中,你要将连帽衫改为连帽衫:开始按照之前的定义运行“开始”任务。