Является ли потребительский тест pact только генерацией контрактных файлов json? - PullRequest
0 голосов
/ 09 мая 2018

Является ли потребительский тест pact для создания json-файлов контракта?

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

В моем коде ниже. Я определил ответ с 200 и простым телом, затем протестировал его вызов mockProvider. кажется бесполезным. Кто-нибудь, пожалуйста, дайте мне руководство.

public class PactTest {

  @Rule
  public PactProviderRuleMk2 mockProvider
        = new PactProviderRuleMk2("test-provider", "localhost", 8017, this);


  @Pact(consumer = "test-consumer")
  public RequestResponsePact createPact(PactDslWithProvider builder){
    Map<String, String> headers = new HashMap<>();

    return builder
            .given("test Get")
                .uponReceiving("GET REQUEST")
                .path("/pact")
                .method("GET")
            .willRespondWith()
                .status(200)
                .headers(headers)
                .body("{\"condition\": true, \"name\":\"tom\"}")
            .toPact();
  }

  @Test
  @PactVerification
  public void givenGet_whenSendRequest_shouldReturn200withProperHeaderAndBody() {
    ResponseEntity<String> res = new RestTemplate()
                                        .getForEntity(mockProvider.getUrl()+"/pact", String.class);

    assertThat(res.getStatusCode().value()).isEqualTo(200);
  }
}

1 Ответ

0 голосов
/ 09 мая 2018

Краткий ответ - нет.

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

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

Мы только что обновили документы сегодня, возможно, это поможет.

...