示例junit5 pact消息提供者测试

问题描述 投票:0回答:1

我已经能够将消息使用者协议测试转换为junit5,但是不确定如何使用junit5提供程序自述文件中的信息来转换相应的消息提供程序验证测试。有人可以指出一个示例或提出有关提供程序对消息队列提供程序进行测试的概述的建议,以便与PactVerificationcontext一起使用吗?

我正在尝试转换类似的内容:

import au.com.dius.pact.provider.PactVerifyProvider;
import au.com.dius.pact.provider.junit.Consumer;
import au.com.dius.pact.provider.junit.PactRunner;
import au.com.dius.pact.provider.junit.Provider;
import au.com.dius.pact.provider.junit.loader.PactFolder;
import au.com.dius.pact.provider.junit.target.AmqpTarget;
import au.com.dius.pact.provider.junit.target.Target;
import au.com.dius.pact.provider.junit.target.TestTarget;


@RunWith(PactRunner.class)
@Provider("provider")
@Consumer("consumer")
@PactFolder("target/pacts")
public class MessageProviderPact {

  @TestTarget
  public final Target target = new AmqpTarget();

  private KafkaTemplate<String, MsgObject> kafkaTemplate
      = (KafkaTemplate<String, MsgObject>)Mockito.mock(KafkaTemplate.class);

  private MessageProducer messageProducer = new MessageProducer(kafkaTemplate);

  @Test
  @PactVerifyProvider("case a")
  public String verifyCaseA() throws IOException {
    // given
    ListenableFuture<SendResult<String, MsgObject>> future =
        mock(ListenableFuture.class);
    doReturn(future).when(kafkaTemplate).send(any(String.class),
        any(MsgObject.class));

    // when
    DomainObj domainObj = new DomainObj();
    String topic = "kafka_add";
    messageProducer.send(topic, domainObj);

    // then
    ArgumentCaptor<MsgObject> messageCapture = ArgumentCaptor.forClass(
        MsgObject.class);
    verify(kafkaTemplate, times(1)).send(eq(topic),
        messageCapture.capture());

    // returning the message
    return objectMapper.writeValueAsString(messageCapture.getValue());
  }
}
spring junit5 pact
1个回答
© www.soinside.com 2019 - 2024. All rights reserved.