通过参考Pact Repo中给出的示例,我为MessageProvider编写了示例Pact测试。下面是使用者测试,它正在为预期来自提供者的消息生成PACT json文件。
公共类Inbound_Receiving_OpenMessageTest{private byte[]receivingopenloaddetailsmessage;
@Rule
public MessagePactProviderRule mockProvider = new MessagePactProviderRule(this);
@Pact(provider = Configuration.ReceivingProviderOpen, consumer = Configuration.InboundConsumer)
public MessagePact createPact(MessagePactBuilder builder) {
PactDslJsonBody body = (PactDslJsonBody) new PactDslJsonBody()
.stringType("_id")
.object("delivery")
.stringType("deliveryNumber")
.closeObject()
.array("state")
.object()
.stringType("changeTime")
.stringValue("status", "OPEN")
.stringType("changeUser")
.closeObject()
.closeArray();
Map<String, String> metadata = new HashMap<String, String>();
metadata.put("contentType", "application/json");
return builder
.given("Receiving(Open) App State")
.expectsToReceive("Receiving Open Load details Test")
.withMetadata(metadata)
.withContent(body)
.toPact();
}
@Test
@PactVerification({Configuration.ReceivingProviderOpen, "Receiving(Open) App State"})
public void test() throws Exception {
Assert.assertNotNull(new String(receivingOpenLoadDetailsMessage));
LoadDetails openLoadDetails = null;
Gson gson = new GsonBuilder().create();
String entity = new String(receivingOpenLoadDetailsMessage);
openLoadDetails = gson.fromJson(entity, LoadDetails.class);
if(openLoadDetails.getDelivery().getDeliveryNumber() == null ||
openLoadDetails.getState().get(0).getChangeUser() == null ||
openLoadDetails.getState().get(0).getChangeTime() == null ||
openLoadDetails.getState().get(0).getStatus() == null){
Assert.fail("Either one of the field 'deliveryNumber' or 'changeTime' or 'status' or 'changeUser' is NULL");
}
}
public void setMessage(byte[] messageContents) {
receivingOpenLoadDetailsMessage = messageContents;
}
}
这篇博文对此进行了更详细的解释。
从本质上讲,这个想法是,如果您能够验证将消息放入队列的代码符合约定(提供者),并且处理来自队列的消息的代码也符合约定(使用者),那么您实际上就不需要消息队列来验证约定。
本文向大家介绍Android7.0 MessageQueue详解,包括了Android7.0 MessageQueue详解的使用技巧和注意事项,需要的朋友参考一下 Android中的消息处理机制大量依赖于Handler。每个Handler都有对应的Looper,用于不断地从对应的MessageQueue中取出消息处理。 一直以来,觉得MessageQueue应该是Java层的抽象,然而事实上Mes
我正在尝试使用pact来验证spring boot微服务。我已经从consumer生成了pact文件,并在provider端使用pact Broker验证了它。 我有另一个用例,在根据实际的服务响应验证pact文件之前,我需要执行一些代码。我读过关于状态改变URL和状态改变与闭包来实现它,但没有得到一个如何实现这一点的例子。有人能帮忙吗? 如果这个客户不存在,那么我将需要通过读取pact文件中的更
我正在尝试配置TomEE(带有Java EE的Tomcat)以使用AMQP Wire协议连接到外部代理(Azure Service Bus)。缺省情况下,JMS提供程序似乎是ActiveMQ。根据文档,ActiveMQ确实支持AMQP协议。我的目标是使用ActiveMQ作为TomEE提供的JMS提供程序。但是,部署基本ear文件时,会出现以下错误: 有人将ActiveMQ与AMQP一起使用吗?或者
我知道协议缓冲区是一种序列化格式,需要中的消息格式。proto,以便正确读回。但我有一个文件,我不知道正确的消息格式,因为它没有发布。我想做的是自己对数据进行反向工程,这样我就可以重建消息。为此,我需要读取原始文件,从中可以提取字段编号、类型和值。 有没有一个程序可以做到这一点(最好是在python中,但C/C也很酷)?
我想为我的客户和API建立契约测试。我的API不能在本地运行,所以我希望能够在部署到生产之前,针对已部署的API临时版本运行提供程序测试。 我在网上看到的提供程序测试的大多数示例都使用了localhost。当尝试对我部署的HTTPSendpoint运行提供程序测试时,测试失败,显示。是不支持HTTPS协议,还是我遗漏了什么? 使用pact-provider-verifier cmd line工具工
我刚刚开始对我的系统采用Pact测试,它由一个提供者服务和一个作为消费者的棱角前端组成。我成功地设置了双方,因此,Angular应用程序生成了一个(单个)pact文件,与我的提供者服务的多个endpoint进行了许多交互。在提供程序中,我现在确实面临这样一个问题,即我的验证测试变得非常庞大和过于复杂,因为我必须在一个测试中用所有endpoint的数据模拟所有endpoint,例如: 有没有一种方法