Договор: опубликовать договор с брокером до или после завершения
В конце моего потребительского теста мне нужно сделать 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
блок когда-либо исполняется. Я не получаю никаких сообщений на консоль.
Что здесь происходит? В каком порядке я должен вызывать эти функции, и почему второй порядок не работает?
1 ответ
Публикация пактов должна быть обязательно завершена после доработки.
Я бы порекомендовал вам сделать это в отдельной задаче, а не в том же коде, что и тесты, как это следует делать только с помощью CI, а не с вашей локальной машины.