договор: опубликовать договор для брокера до или после завершения

В конце потребительского теста мне нужно сделать два шага:

  1. доработать макет сервера
  2. опубликуйте договор брокеру.

Сначала я публиковал до доработки, вот так:

var opts = {
  //broker info
}
pact_node.publishPacts(opts).then(() => {
  provider.finalize()
}).catch(() => {
  console.error("Could not publish pact!")
  provider.finalize()
})

Что я понял по этому поводу, так это то, что finalize() - это то место, где записывается файл пакта. Поэтому, если я делаю что-то в этом порядке, при первом запуске теста ничего не публикуется, и каждый раз я публикую версию контракта из предыдущего запуска. Итак, я попытался изменить порядок, чтобы сначала доработать макет сервера, а затем опубликовать:

provider.finalize().then(() => {
  console.log("Publishing pact to broker")
  pact_node.publishPacts(opts)
}).catch(() => {
  console.error("Could not finalize provider!")
})

Но при этом ни блок then, ни блок catch никогда не выполняются. Я не получаю сообщений, выводимых на консоль.

Что здесь происходит? В каком порядке я должен вызывать эти функции и почему второй порядок не работает?


person ewok    schedule 14.10.2017    source источник


Ответы (1)


Публикация пактов обязательно должна быть произведена после завершения.

Я бы порекомендовал вам сделать это в отдельной задаче, а не в том же коде, что и тесты, так как это должно выполняться только из CI, а не с вашего локального компьютера.

person Beth Skurrie    schedule 15.10.2017