Тестовая база Grunt and hood.ie
В настоящее время я использую свой набор тестов на AngularJS, используя Grunt, Karma, Jasmine и Protractor. Библиотека базы данных, которую я использую, это http://hood.ie/, которая является библиотекой поверх CouchDB. Я запускаю hood.ie, используя следующий код в моем Gruntfile:
hoodie: {
start: {
options: {
callback: function(config) {
grunt.config.set('connect.proxies.0.port', config.stack.couch.port);
}
}
}
},
Тем не менее, я хотел бы иметь отдельную базу данных для выполнения тестов, которая автоматически сбрасывается после этого. Таким образом, производственные данные не будут конфликтовать с тестами.
Как мне подойти к этому? Я предположил бы, что есть какой-то стандартный способ сделать это, поскольку я могу предположить, что другие люди сталкивались с той же самой проблемой, но я не могу найти что-либо в Интернете.
2 ответа
В настоящее время это кажется невозможным, поскольку сервер с капюшоном не поддерживает его. Лучший способ добиться этого - изменить его самостоятельно в репозитории Github на сервере Hood.ie, добавив параметр, определяющий папку, в которой будут храниться данные, которая на данный момент жестко закодирована в "data" ( https://github.com/hoodiehq/hoodie-server/blob/master/lib/core/environment.js#L48)
Что-то похожее на это должно работать:
app_path: path.resolve(project_dir, argv.folder || 'data')
Поскольку задача 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']);
Примечание: это будет означать, что в любой другой момент, когда вы обращаетесь к задаче с капюшоном, вам нужно быть явным, иначе все указанные цели будут выполнены. Смотрите эту документацию по многозадачности для получения дополнительной информации. В этом примере вы изменили бы толстовку на толстовку: начинайте запускать задачу запуска, как было определено ранее.