Тестовая база 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']);

Примечание: это будет означать, что в любой другой момент, когда вы обращаетесь к задаче с капюшоном, вам нужно быть явным, иначе все указанные цели будут выполнены. Смотрите эту документацию по многозадачности для получения дополнительной информации. В этом примере вы изменили бы толстовку на толстовку: начинайте запускать задачу запуска, как было определено ранее.

Другие вопросы по тегам