Тестирование пакта Java GRPC — PactPluginMockServerErrorExceptionJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Тестирование пакта Java GRPC — PactPluginMockServerErrorException

Сообщение Anonymous »

Привет, ребята, я пытаюсь реализовать PACT в наших тестах, но у меня возникли некоторые проблемы. Я использую Java 17 с Maven (Quarkus) и GRPC. Когда я пытаюсь запустить тест, я получаю это исключение:
PactPluginMockServerErrorException: плагину protobuf не удалось запустить фиктивный сервер: не удалось запустить фиктивный сервер gRPC: Pact файл не содержит дескрипторов Protobuf
Это мой код:

Код: Выделить всё

@ExtendWith(PactConsumerTestExt.class)
@PactTestFor(providerName = "some-service", providerType = ProviderType.SYNCH_MESSAGE, pactVersion = PactSpecVersion.V4)
public class SomePactTest {

@Pact(consumer = "other-service")
V4Pact someTransactions(PactBuilder builder) {
return builder
.usingPlugin("protobuf")
.expectsToReceive("submit request", "core/interaction/message")  // tried also synchronous-message
.with(Map.of(
"pact:proto", filePath("target/schemas/proto/some-transaction.proto"),
"pact:content-type", "application/protobuf",  // tried also grpc
"pact:proto-service", "SomeTransactions/SubmitSomeTransactions",
"pact:message-type", "SubmitSomeTransactionsRequest",
"pact:protobuf-config", Map.of(  // tried without this
"additionalIncludes",
List.of(filePath("../type"))),
"request", Map.of(
"product", "PRODUCT_TEST",
"customer_id", "1234567890",
"transactions", Map.of(
"type_code", "SOMETHING",
"amount", "10.0",
"metadata", Map.of(
"key1", "value1",
"key2", "value2"
)
)
),
"response", Map.of(
"main", Map.of(
"balance", "100.0"
)
)
))
.toPact();
}

@Test
@PactTestFor(pactMethod = "someTransactions")
@MockServerConfig(implementation = MockServerImplementation.Plugin, registryEntry = "protobuf/transport/grpc")
void someTransaction(MockServer mockServer, V4Interaction.SynchronousMessages interaction) throws InvalidProtocolBufferException {
ManagedChannel channel = ManagedChannelBuilder.forAddress("127.0.0.1", mockServer.getPort()).usePlaintext().build();
SomeTransactionsGrpc.SubmitSomeTransactionsBlockingStub stub = newBlockingStub(channel);

SubmitSomeTransactionsRequest request = SubmitSomeTransactionsRequest.newBuilder()
.setProduct(ProductItem.PRODUCT_TEST)
.setCustomerId(1234567890L)
.addTransactions(TransactionItem.newBuilder()
.setTransactionTypeCode("SOMETHING")
.setAmount("10.0")
.putAllMetadata(Map.of(
"key1", "value1",
"key2", "value2"
))
.build())
.build();

SomeTransactionsResponse response = stub.SubmitSomeTransactions(request);
assertNotNull(response.getMain());
}
}
Не совсем понимаю, что это значит, но я просмотрел эту конференцию Slack (https://docs.pact.io/slack/protobufs), и предложенное решение состояло в том, чтобы добавить 'pact :protobuf-config', поскольку файл прототипа содержит типы, основанные на другом файле прототипа. Но безуспешно.
Если кто-то может помочь, я не могу найти много ресурсов по этому вопросу.
Очень признателен.

Подробнее здесь: https://stackoverflow.com/questions/781 ... rexception
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»