匹配Spock交互的与订单无关的集合内容

时间:2016-07-11 13:26:11

标签: spock

是否可以匹配列表,无论Spock交互的顺序如何?

例如,如果我有以下方法:

ColumnDefinition

我想测试public void execute(List<User> users) { List<User> admins = users.stream().filter(User::isAdmin).collect(); worker.initAdmins(admins); } 是否与我期望的用户一起调用如下:

worker.initAdmins

问题是我的互动没有匹配,因为我无法保证传入List的顺序。这可以解决吗?

2 个答案:

答案 0 :(得分:1)

或者,您可以在方法调用期望中转换为Set

1 * worker.initAdmins(expectedAdminList as Set)

请注意,这假设您的传入列表中没有重复项可靠。

答案 1 :(得分:0)

我最终找到了一个有效的解决方案。对于其他任何人来说,它可能在将来有所帮助:

1 * worker.initAdmins({[it.containsAll(expectedAdminList)] && it.size() == expectedSize})