Intereting Posts
Функции расширения LocalDateTime и интеллектуальное литье Конструктор ненулевой перегрузки Как разбирать JSON с URL-адреса, используя Kotlin на Android? Kotlin: Как проверить, содержит ли перечисление заданную Строку, не входя в Исключения? Почему Котлин не поддерживает «тройного оператора», Тематический глобальный ресурс в Android с Kotlin KotlinNullPointerException: внутри onCreateOptionsMenu не удается найти searchView; андроид эта ссылка в ленивом инициализаторе свойства расширения котлина Проверьте, является ли функция расширением Котлин заставляет геттер / сеттер рефлексивно Kotlin – единственный экземпляр класса, не являющегося одиночным? Kotlin: For-loop должен иметь метод итератора – это ошибка? Проверьте, работает ли моя активность в MultiWindowMode или не используется Kotlin Инициализация массивов в котлине Класс данных Kotlin: как читать значение свойства, если я не знаю его имени во время компиляции?

Провайдер pactVerify не подбирает файл JSON Pact

У меня есть два проекта в одном и том же репо, с полностью отдельными структурами каталогов (потребитель в /test-consumer , provider in /app ).

Потребительская проверка выводит файл пакта JSON в /test-consumer/build/pacts , как и ожидалось

 dependencies { test { systemProperties['pact.rootDir'] = "$buildDir/pacts" } } 

Затем я копирую файл в /app/build/pacts/ и помещаю эту же строку build.gradle в build.gradle моего провайдера.

Примерный проект, с которого я плагиату, использует брокер Pact, поэтому я догадался, что смогу это сделать и заменить его на rootDir , но он не работает. Это то, что я получаю:

WARNING: There are no consumers to verify for provider 'Coffee Ordering Provider'

Таким образом, похоже, что он находит файлы Pact, но не может найти пару провайдеров + потребителей в любом из них.

TL; DR: Что я делаю неправильно?

Вот несколько кодовых битов, которые помогут:

 dependencies { ... test { systemProperties['pact.rootDir'] = "$buildDir/pacts" } } pact { serviceProviders { 'Coffee Ordering Provider' { port = 8080 startProviderTask = startProvider terminateProviderTask = stopProvider stateChangeUrl = url('http://localhost:8080/pactStateChange') } } } 

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

 pact { serviceProviders { 'Coffee Ordering Provider' { port = 8080 startProviderTask = startProvider terminateProviderTask = stopProvider stateChangeUrl = url('http://localhost:8080/pactStateChange') hasPactsWith('Coffee Ordering Consumers') { // Will define a consumer for each pact file in the directory. // Consumer name is read from contents of pact file pactFileLocation = file("$buildDir/pacts") } } } } 

Просто обратите внимание, что вы устанавливаете pact.rootDir для всех тестов, но проверка пакта не выполняется в качестве теста.