我正在尝试为应用程序编写组件测试框架。该应用程序可以通过JMS / Websockets发送消息(传输并不重要)。我正在使用黄瓜来定义BDD步骤。
执行动作后,许多事件将被发送到组件测试服务器,以与预期列表进行匹配。
我正在寻找一种设计模式/方法,该方法/方法将使我能够灵活地在数据表中为相同的消息类型编写不同的命名字段,而不必在其后面的代码被每个特定字段的样板肿。
示例,给出一条具有以下定义的消息:
Order {
String orderId;
int size;
int amount;
String name;
}
我希望能够编写不同的断言:
Then I should have received following orders:
|orderId|size|amount|
|order1 | 10 | 50 |
|order2 | 5 | 10 |
Then I should have received following orders:
|orderId|name |
|order1 |ted |
|order2 |steve|
我考虑过执行这种验证的几种方法:
1)循环浏览收到的消息,过滤掉所有订购消息。然后,对于每个命名字段,在给定的订单消息上定义查找功能,将返回该字段的值。检查每个收到的消息中所有字段的相等性。
这种方法将留下很多样板代码,因为您必须为消息中的每个值定义特定的查找功能(这些消息可以有100个字段)
2)创建一个订单POJO。将收到的消息解析为Order POJO。还将断言中定义的字段解析为POJO。在equals方法中,执行类似“如果从断言中设置了字段,然后将其包括在相等性检查中,否则将其排除”。
感觉更好,但是当消息具有列表类型时可能会出现问题。即列表应该为空还是空列表?我们可以有一定大小的忽略值列表吗?
围绕此必须有文档/设计模式,但是我找不到任何好的示例。任何朝着正确方向的指针将不胜感激