Как создать динамический ответ из заглушек без повторной генерации? - PullRequest
0 голосов
/ 12 октября 2018

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

Как получить случайный ответ без повторной генерации заглушек в этом случае?

Также аналогичный вопрос был задан кем-то год назад, в ответ было написано, что это невозможно.Это все еще невозможно или есть способ сделать это сейчас?

1 Ответ

0 голосов
/ 07 ноября 2018

Вам нужно будет создать собственное расширение для WireMock.Проверьте этот раздел документации: https://cloud.spring.io/spring-cloud-static/Finchley.SR2/single/spring-cloud.html#_registering_your_own_wiremock_extension

95.5.6 Регистрация собственного расширения WireMock WireMock позволяет регистрировать пользовательские расширения.По умолчанию Spring Cloud Contract регистрирует преобразователь, который позволяет ссылаться на запрос из ответа.Если вы хотите предоставить свои собственные расширения, вы можете зарегистрировать реализацию интерфейса org.springframework.cloud.contract.verifier.dsl.wiremock.WireMockExtensions.Поскольку мы используем подход расширения spring.factories, вы можете создать запись в файле META-INF / spring.factories, подобную следующей:

org.springframework.cloud.contract.verifier.dsl.wiremock.WireMockExtensions=\
org.springframework.cloud.contract.stubrunner.provider.wiremock.TestWireMockExtensions
org.springframework.cloud.contract.spec.ContractConverter=\
org.springframework.cloud.contract.stubrunner.TestCustomYamlContractConverter

Ниже приведен примерпользовательское расширение:

TestWireMockExtensions.groovy.

package org.springframework.cloud.contract.verifier.dsl.wiremock

import com.github.tomakehurst.wiremock.extension.Extension

/**  * Extension that registers the default transformer and the custom one  */ class TestWireMockExtensions implements WireMockExtensions {     @Override   List<Extension> extensions() {      return [
                new DefaultResponseTransformer(),
                new CustomExtension()       ]   } }

class CustomExtension implements Extension {

    @Override   String getName() {      return "foo-transformer"    } }

Вам необходимо создать расширение, которое изменяет ответ и генерирует его часть.Это расширение должно быть доступно как на стороне потребителя, так и на стороне производителя.

...